2016-11-28 85 views
0

我想仅从mongo db'property'集合中提取1个文档。 它也应该是最新的文件。 它看起来很简单,但我不知道为什么我的查询没有检索限制中指定的文档数。如何在mongodb和NodeJS查询中使用限制

原始的方法:此查询提取所有文件

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:此查询给出了正确的1号文件,但我现在想要最新的一个。

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

任何帮助将不胜感激。

谢谢

+2

http://stackoverflow.com/questions/5789001/identify-last-document-from-mongodb-find-的可能欺骗结果集 – chridam

回答

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); 
    }); 

你可以试试这个,让我,如果有对结果没有任何问题。

+0

我得到TypeError:q.exec不是一个函数。有什么依赖我失踪? 我是nodejs和mongodb的新手 –

+0

首先,您需要使用“require”导入模型。 'var Property = require('../ models/property');' 您可以使用变量'Property'获取记录。 (1);(3)(3)(3)(3)(4) q.exec(function(err,prop){if(err)res.send(err); res.json(prop); }); – Stone

0

我试图以多种方式修改查询,最后我得到了它的解决方案

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