0
我試圖根據辦法,收集了大量刪除重複文件MongoDB中描述here:在MongoDB中進行聚合時,解決「BSONObj大小:17582686(0x10C4A5E)無效」?
db.events.aggregate([
{ "$group": {
"_id": { "firstId": "$firstId", "secondId": "$secondId" },
"dups": { "$push": "$_id" },
"count": { "$sum": 1 }
}},
{ "$match": { "count": { "$gt": 1 } }}
], {allowDiskUse:true, cursor:{ batchSize:100 } }).forEach(function(doc) {
doc.dups.shift();
db.events.remove({ "_id": {"$in": doc.dups }});
});
即我想刪除具有相同「firstId
- secondId
」組合的事件。但過了一段時間,MongoDB迴應了這個錯誤:
2016-11-30T14:13:57.403+0000 E QUERY [thread1] Error: getMore command failed: {
"ok" : 0,
"errmsg" : "BSONObj size: 17582686 (0x10C4A5E) is invalid. Size must be between 0 and 16793600(16MB)",
"code" : 10334
}
有沒有辦法解決這個問題?我正在使用MongoDB 3.2.6。
但是,什麼是你如何在實際打印他們刪除重複後,因爲這個控制檯AFAICT建議嗎? (確實有很多重複的內容) – Johan
上面的腳本可以修改爲將記錄保存到某個單獨的集合中,之後您可以執行任何清除操作,以刪除或修改重複的記錄。 「打印」行將被改爲'db.dupe_keys.insert({「firstId」:doc.firstId,「secondId」:doc.secondId})''。 –