排序和限制mongo db的游标后使用next()有什么意义?

时间:2015-08-09 05:20:46

标签: mongodb

var cursor = db.processes.find({"status" : "READY"});
ps = cursor.sort({"priority" : -1}).limit(1).next();

在上面的代码中,如果我最后不使用next(),那么我在ps中得到相同的结果。那么最后使用next()有什么意义呢?

1 个答案:

答案 0 :(得分:3)

在你的情况下它没有区别。这是因为您在第二行添加了limit(1)

但是如果你将它删除并只使用ps = cursor.sort({"priority" : -1}).next();,这仍然只返回一个元素并将光标移动到下一个元素。因此,当您再次运行相同的查询ps = cur...时,它将返回下一个元素。这将继续,直到你耗尽光标,你会得到error hasNext: false之类的东西(或者光标会超时,等待几分钟而不触及它会超时)。

另一方面,如果您将运行ps = cursor.sort({"priority" : -1}),您将获得所有结果(实际上DBQuery.shellBatchSize)。

详细了解next here:

  

返回:由...返回的游标中的下一个文档   db.collection.find()方法。