我在MongoDB中有一個非常大的加蓋集合。考慮到封頂的集合結構是可預測的(即,預定義了排序,內存佔用是預定義的,等等),有沒有更好的方法來獲取插入最新項目而不是迭代的遊標?跳過mongo加蓋集合
換句話說,我現在正在做的是獲取我的集合(n)的大小,然後創建一個設置skip = n-1的光標,使我處於集合的末尾。然後我遍歷遊標並處理集合中的所有新增內容。
這種方法的問題是我的收藏是巨大的。可以說11米的記錄。需要20分鐘才能跳過。這意味着當我的光標開始發射數據時,它會落後20分鐘。
我在MongoDB中有一個非常大的加蓋集合。考慮到封頂的集合結構是可預測的(即,預定義了排序,內存佔用是預定義的,等等),有沒有更好的方法來獲取插入最新項目而不是迭代的遊標?跳過mongo加蓋集合
換句話說,我現在正在做的是獲取我的集合(n)的大小,然後創建一個設置skip = n-1的光標,使我處於集合的末尾。然後我遍歷遊標並處理集合中的所有新增內容。
這種方法的問題是我的收藏是巨大的。可以說11米的記錄。需要20分鐘才能跳過。這意味着當我的光標開始發射數據時,它會落後20分鐘。
嘗試db.cappedCollection.find()。limit(1).sort({$ natural:-1})。
我相信只有$ natural:1纔可用於可用遊標的遊標 – 2012-04-16 05:01:42
您是否試過索引集合並使用$ gt - 儘管索引對寫入集合的速度會有一些影響,但這應該會更快。
在幾乎所有情況下,這都是正確的解決方案,但是在更新集合非常高的情況下,它會真正影響性能。就我而言,我正在研究oplog,所以我不能這樣做。 – 2012-04-23 14:01:26
我有同樣的問題。我正在試圖使我們的oplog目前擁有1.8億個文檔。可拖動的光標可能需要幾個小時才能初始化。我不能在oplog上添加索引。我仍然在尋找一個體面的選擇。現在我正在做的是對$ natural:-1進行排序,然後向後讀尾,直到找到前一個文檔讀取爲止,而不是使用可拖動的遊標。 – Marquez 2013-09-25 00:56:54