問題陳述
儘管在「上使用唯一鍵建立集合」 uid ”和“sid”字段,重複文檔仍在插入到集合中。
技術細節
使用的索引創建命令:
db.user_services.createIndex({"uid":1 , "sid": 1},{unique:true,dropDups: true})
使用的索引創建命令:
原因由於集合中存在重複文檔,索引建立失敗。 >
解決方案db.events.aggregate([ { "$group": { "_id": { "uid": "$uid", "sid": "$sid" }, "dups": { "$push": "$_id" }, "count": { "$sum": 1 } }}, { "$match": { "count": { "$gt": 1 } }} ]).forEach(function(doc) { doc.dups.shift(); db.events.remove({ "_id": {"$in": doc.dups }}); });Upsert 操作
db.events.createIndex({"uid":1 , "sid": 1},{unique:true})
以上是為什麼即使在使用「dropDups」建立唯一按鍵後,我的 MongoDB 集合中仍會出現重複文件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!