将我的MongoDB Java驱动程序从版本2.14升级到3.2后,我从使用DBCursor更改为MongoCursor。
以前,我在使用数千个文档的大型数据库进行迭代时,使用snapshot()
来防止重复。但是,我似乎无法找到MongoCursor的等效方法。这导致麻烦的重复,例如4471个文档的5571个循环。这就像24%的迭代次数! OMG!
所以,我的问题是,是否有一种简单的方法或MongoCursor的等效方法可以防止这种情况发生?如果没有,我应该切换回使用DBCursor吗?它看起来仍然在3.2版本中得到支持。
请劝告!谢谢!
答案 0 :(得分:1)
在通过检查探查器日志敲击了一些东西后,我确实得到了一个确认:
MongoCursor<Document> cursor = collection.find().modifiers(
new Document("$snapshot", true)
).iterator();
因此,您需要在.modifiers()
$snapshot
true
"query" : {
"find" : "sample",
"filter" : {
},
"snapshot" : true
},
时调用FindIterable
。这与.snaphot()
光标修饰符的连线一致。
两者都在探查器中记录如下:
{{1}}
显示正确的修改器。