从MongoDB find()结果集中识别最后一个文档

时间:2011-04-26 10:28:42

标签: mongodb node.js

我正在尝试使用websockets将node.js / MongoDB实例中的数据“流”传输到客户端。一切运作良好。

但是如何识别结果中的最后一个文档?我正在使用node-mongodb-native从node.js连接到MongoDB。

简化示例:

collection.find({}, {}, function(err, cursor) {
  if (err) sys.puts(err.message);

  cursor.each(function(err, doc) {
    client.send(doc);
  });                
});

3 个答案:

答案 0 :(得分:29)

由于mongodb objectId contatins创建日期,您可以按id排序,降序然后使用limit(1):

db.collection.find().sort( { _id : -1 } ).limit(1);

注意:我根本不熟悉node.js,上面的命令是mongo shell命令,我想你可以轻松地将它重写为node.js。

答案 1 :(得分:1)

说我有公司收藏。下面的片段给出了我在该集合中的最后一个文档。

db.companies.find({},{ “_编码”:1})。跳过(db.companies.find()计数() - 1);

代码不能依赖于_id,因为它可能不是特定模式,如果它是用户定义的值。

答案 2 :(得分:0)

如果要使用游标,请使用排序和限制:

var last = null;
var findCursor = collection.find({}).cursor();
findCursor.on("data", function(data) {
   last = data;
   ...
});
findCursor.on("end", function(data) {
   // last result in last
   ....
});