如何在MongoDB和NodeJS查询中使用限制?

4
我希望从MongoDB的“property”集合中提取仅最新的1个文档。查询应该很简单,但我不知道为什么我的查询没有按照限制返回指定数量的文档。 原始方法:此查询会提取所有文档。
app.get('/', function(req, res){      
    db.property.find(function (err, docs) {
    res.render("index.ejs",{property: docs});
  })
});

编辑1:此查询未提取任何内容

app.get('/', function(req, res){       
     db.property.find( {sort: {created_at: -1}, limit: 1}, function (err, docs) {
     res.render("index.ejs",{property: docs});
   })
}); 

编辑2:这个查询结果显示正确的一个文档,但是现在我想要最新的文档。

app.get('/', function(req, res){       
     db.property.find({}).limit(2).toArray(function (err, docs) {
     res.render("index.ejs",{property: docs});
   })
});

任何帮助都将不胜感激。
谢谢。

2
可能是 https://dev59.com/Ym025IYBdhLWcg3wzZT3 的重复问题。 - chridam
3个回答

5

我尝试以多种方式修改查询,最终找到了解决方案。

app.get('/', function(req, res){       
    db.property.find({}).sort({timestamp: -1}).limit(1).toArray(function (err, docs) {
     res.render("index.ejs",{property: docs});
    })
});

0
var Property = require('../models/property');

var q = Property.find().sort({created_at: -1}).limit(1);
    q.exec(function(err, property) {
        if (err) res.send(err);
        res.json(property);
    });

你能试试这个吗?如果结果有任何问题,请告诉我。


我收到了TypeError:q.exec不是函数的错误。我是否缺少任何依赖项? 我是NodeJS和MongoDB的新手。 - Shubham Yeole
首先,您需要使用“require”导入模型。var Property = require('../models/property');您可以使用变量“Property”获取记录。var q = Property.find().sort({created_at: -1}).limit(1); q.exec(function(err, prop) { if (err) res.send(err); res.json(prop); }); - Stone

0

这是我用来排序的方法:

db.projectadmins.find({}).projection({}).sort({_id:-1}).limit(100)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接