2014-06-18 36 views
1

我想通过_id返回上一个和下一个mongo文档。下面的第一个为下一个工作,但后者不返回前一个。它返回第一个文档。我尝试使用$sort,但它似乎没有做任何事情。在mongoDB中,如何通过_id找到以前的文档?

posts.findOne({'_id': {'$gt': identity}}, function(err, post) { 
     "use strict"; 
     if (err) return callback(err, null);   
     callback(err, post); 

    }); 

    posts.findOne({'_id': {'$lt': identity} }, {'$sort':-1}}, function(err, post) { 
     "use strict"; 
     if (err) return callback(err, null);   
     callback(err, post); 

    }); 

回答

3

这不是sort选项的正确语法。这将是:

posts.findOne({_id: {$lt: identity}}, {sort: {_id: -1}}, function(err, post) { 
+0

谢谢。那是做 – Squirrl

+0

它怎么不是$排序? – Squirrl

+1

我假设你在使用'sort'的本地节点驱动程序(参见[docs](http://mongodb.github.io/node-mongodb-native/api-generated/collection.html#findone)) 。 '$ sort'只能用于'aggregate' AFAIK。 – JohnnyHK