我正在寻找一种解决方案来保存mongodb游标(在find()之后)以在两个http请求之间访问它。我的环境是JAVA Spring MVC和mongodb(Spring Data),所以我拥有所有强大的功能。不幸的是我没有找到任何解决我问题的文档/教程:
客户在第一次请求中请求前20个结果,在第二个请求中请求后续20个。我没有再次查询mongo,而是想访问先前生成的游标,因为文档在时间内发生了变化,我希望得到它们的初始顺序。有什么方法可以做到吗?
非常欢迎帮助!
答案 0 :(得分:1)
某些驱动程序支持对名为getMore
的游标进行延迟操作。这将重用您的光标ID来检索更多数据。
除非您严格询问,否则您的光标不会执行快照,导致插入或删除新文档时出现奇怪的行为(如同两次查看相同的文档)。要对结果进行快照,请尝试将.snapshot()
添加到您的查询中,例如:
var cursor = db.myCollection.find({country:'uk'}).snapshot();
我从未测试过,所以请确认这种观察方式是否有效。
答案 1 :(得分:0)
您还可以尝试遍历Cursor
并将所有内容添加到SortedMap
。然后,您可以根据需要多次查询SortedMap
。您可以SortedMap
按自然顺序对其进行排序,也可以使用Comparator
按照您想要的方式对其进行排序。