是否可以选择插入当前使用find的mongoDB中的最后30个或任何数量的记录,并发出所有参数。
db.tweets.find({}, function(err, docs){
response.end(JSON.stringify(docs));
});
我不确定需要在大括号中找到什么。
答案 0 :(得分:1)
mongo-native的find()语法(对于mongoskin来说是相同的)是:
find(query[, options], callback)
或
find(query[, options]).toArray(callback)
第一个参数是搜索条件,因此它不能存在,但限制可以放在可选的第二个参数中。像这样:
db.tweets.find({}, {limit: 30}).toArray(function(err, docs){
response.end(JSON.stringify(docs));
});
更新:您还可以指定'排序'得到最后的30.这样的事情:{limit:30,sort:[" timestamp"," desc"]}(" desc"或-1 ,不记得语法)" timestamp"是您要排序的字段。
答案 1 :(得分:0)
如果您使用ObjectId
作为文档的_id
字段,那么_id
按降序排序可能会为您提供正确的文档顺序,从最近插入的。这是因为MongoDB的ObjectId
包含时间戳。请注意,如果您运行多个MongoDB实例,这将取决于进程'时钟很好地同步,我相信最高精度是一秒钟。无论如何,您可以按如下方式运行:
db.tweets.find({}).sort({ "_id" : -1 }).limit(30, function(err, docs) {
// Do something here
});
但是,如果您没有使用ObjectId
,那么您的文档在创建时需要有一个带有时间戳的字段,您可以将"_id"
替换为该字段的名称。上面的代码。
希望有所帮助!