我在Mongo中有一個集合,其中包含一個特定鍵上的重複項,我需要刪除其中的一個。 Map Reduce解決方案似乎沒有清楚說明如何刪除除重複項之外的所有項。我正在使用Ruby,我如何以一種有效的方式來做到這一點?我目前的解決方案令人難以置信的慢!如何使用ruby查找並刪除重複的mongo文檔
我目前只是迭代重複鍵的數組,並刪除返回的第一個文檔,但這隻適用於每個鍵最多有1個重複文檔並且它非常慢。
dupes.each do |key|
$mongodb.collection("some_collection").remove($mongodb.collection("some_collection").find({key: key}).first)
end
這對我來說不起作用,因爲我的集合中有太多的文檔被複制,並且我得到了錯誤「索引構建中的dropDups = true太多了」。 – Musicalmindz
@Musicalmindz然後,你可以建立一個基於舊集合的新集合。首先,你得到給定鍵的不同值列表,然後使用'find_one'方法迭代鍵,然後將檢索到的文檔保存到一個集合中,然後刪除舊的文檔:) –
這絕對是一個選項但我們想要完成這項工作。 – Musicalmindz