var cursor = db.processes.find({"status" : "READY"});
ps = cursor.sort({"priority" : -1}).limit(1).next();
在上面的代码中,如果我最后不使用next()
,那么我在ps中得到相同的结果。那么最后使用next()
有什么意义呢?
答案 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()方法。