我正在使用MongoDB保存有關產品的數據。在寫入最初的大型數據集(24mio項目)後,我想更改集合中的所有項目。MongoDB遊標和寫入操作
因此,我使用遊標遍歷整個集合。然後,我想爲集合中的每個項目添加一個「行」或字段。對於大型數據集,這不起作用。只有180000項更新。在小範圍內它正在工作。這是正常的行爲嗎?
是MongoDB不應該支持寫操作,而在整個集合上使用遊標進行迭代?
這樣做會是一個很好的做法嗎?
我正在使用MongoDB保存有關產品的數據。在寫入最初的大型數據集(24mio項目)後,我想更改集合中的所有項目。MongoDB遊標和寫入操作
因此,我使用遊標遍歷整個集合。然後,我想爲集合中的每個項目添加一個「行」或字段。對於大型數據集,這不起作用。只有180000項更新。在小範圍內它正在工作。這是正常的行爲嗎?
是MongoDB不應該支持寫操作,而在整個集合上使用遊標進行迭代?
這樣做會是一個很好的做法嗎?
對於較大的集合,您可能會遇到快照問題。將數據添加到對象並保存時,它會增加,迫使mongodb移動文檔。然後你可能會發現兩次對象。
您可以在查詢中使用$snapshot
或使用穩定的訂單,如sort({"_id":1})
。請注意,你不能同時使用兩者。
此外,請確保至少使用已確認的寫入問題。
當我們遇到類似的問題時,我們在100k(帶有一些測試)塊中獲取數據。這是一個快速簡單的解決方案。
謝謝!我會嘗試。這可能需要一段時間,因爲處理需要很長時間,但我會回覆你:) –
如果你正在處理24萬條記錄,那應該需要一些時間:) –
謝謝!我使用快照。這沒有幫助。但我可以嘗試對其進行排序。 –