為什麼即使在使用「dropDups」建立唯一按鍵後,我的 MongoDB 集合中仍會出現重複文件?

DDD
發布: 2024-11-04 07:10:31
原創
1007 人瀏覽過

Why Am I Getting Duplicate Documents in My MongoDB Collection Even After Creating a Unique Key with `dropDups`?

加入唯一鍵後MongoDB 重複文件

問題陳述

儘管在「上使用唯一鍵建立集合」 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 操作
  • 對於問題的第二部分,根據現有數據的存在來實現插入或更新文檔的所需行為,使用帶有“upsert”選項的“. update()」方法:
這將修改找到的文件並根據需要插入新文件。此外,您可以使用「$setOnInsert」來指定僅應在文件插入期間設定的欄位。
db.events.createIndex({"uid":1 , "sid": 1},{unique:true})
登入後複製

以上是為什麼即使在使用「dropDups」建立唯一按鍵後,我的 MongoDB 集合中仍會出現重複文件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!