2012-08-29 61 views
0

我目前正在寻找一种解决方案来保存mongodb游标(在find()之后)以在两个http请求之间访问它。我的环境是JAVA Spring MVC和mongodb(Spring Data),所以我拥有它所有的强大功能。不幸的是,我没有找到任何解决我的问题的文档/教程:在两个不同的请求周期中访问MongoDB游标

客户端在第一个请求中请求前20个结果,在他的第二个请求中请求20个结果。而不是再次查询mongo,我想访问以前生成的光标,因为文档在时间内发生了更改,我想要它们的初始顺序。有没有办法如何做到这一点?

帮助非常欢迎!

回答

0

您也可以尝试遍历Cursor并将所有内容添加到SortedMap。然后,您可以根据需要多次查询SortedMap。您可以按照自然顺序对SortedMap进行分类,也可以使用Comparator按照您想要的方式对其进行分类。

1

某些驱动程序支持游标上的懒惰操作,称为getMore。这将重用您的光标ID来检索更多数据。

除非严格要求,否则光标不会执行快照,导致插入或删除新文档时出现奇怪的行为(如同样的文档两次)。要快照你的结果,尝试添加.snapshot()您的查询,如:

var cursor = db.myCollection.find({country:'uk'}).snapshot();

我从来没有测试过,所以请确认是否这种方法wathever工作与否。