簡體   English   中英

MongoDB Java 驅動程序相當於 MongoCursor 的快照

[英]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();

因此,您需要在$snapshottrueFindIterable上調用.modifiers() 這與.snaphot()光標修飾符在線一致。

兩者都記錄在分析器中,如下所示:

   "query" : {
            "find" : "sample",
            "filter" : {

            },
            "snapshot" : true
    },

顯示正確放置的修飾符。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM