识别来自MongoDB find()结果集的最后一个文档

我试图从一个node.js / MongoDB实例'stream'数据到客户端使用websockets。 这一切都很好。

但是,如何识别结果中的最后一个文档? 我使用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); }); }); 

由于mongodb objectId包含创builddate,所以可以按idsorting,然后使用limit(1):

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

注意:我完全不熟悉node.js,上面的命令是mongo shell命令,我想你可以很容易地将它重写到node.js.

说我有公司collections。 下面的代码给了我最后一个文件集合。

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

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

使用sorting和限制,如果你想使用光标:

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