2013-03-06 56 views
1

在MongoDB中,對集合的讀操作返回遊標。如何確保遊標不會在MongoDB中返回重複的文檔?

如果讀取操作正在訪問集合中的大部分文檔,並且可能會與其他更新操作交錯。

在這種情況下,光標可能有重複的文檔嗎?

如何確保光標將避免重複?

+0

你可以使用'distinct'方法,檢查了這一點http://stackoverflow.com/questions/5089162/mongodb-get-distinct-records – ogres 2013-03-06 07:33:14

回答

3

不同的方法在這裏沒有太大的幫助。這不是函數可以解決的問題,不僅如此,它只是正常光標速度的一小部分。

如果讀操作正在訪問集合中的大部分文檔,並且可能會與其他更新操作交錯。

如果文檔移動的方式使得它們可以再次讀取光標,則可能是這樣。

這是否是個問題取決於,如果您按照不會更新的內容進行排序,例如_id,那麼您並不需要擔心,但是,如果您按照某種被更新並且可以改變然後是;你會遇到問題。

解決此問題的一種方法是查看該遊標的最後一個_id,將光標填充到數組或其他內容的批處理中。當你在該批次中的最後一個_id範圍內時,採取的一切大於_id

另一種方法可以做快照查詢:http://docs.mongodb.org/manual/reference/operator/snapshot/但這個功能有相當多的限制,例如,它不能與分片集合中。

相關問題