从mongoDB获取最新的30条记录

时间:2014-07-11 11:38:44

标签: node.js mongodb

是否可以选择插入当前使用find的mongoDB中的最后30个或任何数量的记录,并发出所有参数。

db.tweets.find({}, function(err, docs){
    response.end(JSON.stringify(docs));
});

我不确定需要在大括号中找到什么。

2 个答案:

答案 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"替换为该字段的名称。上面的代码。

希望有所帮助!