我重複刪除代碼(在MongoDB中殼)是這樣的:MongoDB的錯誤而刪除重複
db.<collection_name>.aggregate([
{
$group: {
_id: { <duplicated_keys>: "$<duplicated_keys>" },
dups: { $addToSet: "$_id" },
count: { $sum: 1 }
}
},
{
$match: {
count: { $gt: 1 }
}
}
], { allowDiskUse: true })
.forEach(function(doc) {
doc.dups.shift();
db.<collection_name>.remove({ _id: { $in: doc.dups } });
});
而且我有這樣的錯誤:
[thread1] Error: getMore command failed: {
"ok" : 0,
"errmsg" : "Cursor not found, cursor id: 144931661890",
"code" : 43
}
是什麼原因這個錯誤?我怎麼能解決這個問題?
UPDATE
- MongoDB的版本是3.2
forEach
之前,其結果是:{ "_id" : { <duplicated_keys>: <dupkey_values> }, "dups" : [ ObjectId("56f8e4d37a88ea2aa938414d"), ObjectId("56f63ab87a88ea141ca33856") ], "count" : 2 }
如果我有
ObjectId("56f63ab87a88ea141ca33856")
發現,它是複製文件。- 數據量相對較大(30+ GB),這可能是問題嗎?
- 在運行查詢時,存在對同一個集合的插入。
@zangw嗨,thx回覆。不,不是'_id',他們是一些其他的領域使文件重複。 – xiGUAwanOU
@zangw我更新了我的問題。 – xiGUAwanOU
@zangw奇怪......這可能是因爲大量的數據(30 + GB)?遊標的大小是否有限制? – xiGUAwanOU