![](/img/trans.png)
[英]Difference Between DBCursor and MongoCursor Available in MongoDB Java driver API Doc
[英]MongoDB Java Driver Equivalent of Snapshot for MongoCursor
將 MongoDB Java 驅動程序從 2.14 版升級到 3.2 版后,我從使用DBCursor更改為MongoCursor 。
以前,我在遍歷包含數千個文檔的大型數據庫時使用snapshot()
來防止重復。 但是,我似乎找不到 MongoCursor 的等效方法。 這會導致令人不安的重復,例如 4493 個文檔的 5571 個循環。 這相當於多出 24% 的迭代! 我的天啊!
所以,我的問題是,MongoCursor 是否有一種簡單的方法或等效的方法可以防止這種情況發生? 如果沒有,我應該切換回使用 DBCursor 嗎? 它看起來在 3.2 版中仍然受支持。
敬請指教! 謝謝!
在通過檢查分析器日志敲了幾下之后,我實際上得到了確認:
MongoCursor<Document> cursor = collection.find().modifiers(
new Document("$snapshot", true)
).iterator();
因此,您需要在$snapshot
為true
的FindIterable
上調用.modifiers()
。 這與.snaphot()
光標修飾符在線一致。
兩者都記錄在分析器中,如下所示:
"query" : {
"find" : "sample",
"filter" : {
},
"snapshot" : true
},
顯示正確放置的修飾符。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.