如何从 mongo 数据库中的特定集合中删除重复记录?

Posted

技术标签:

【中文标题】如何从 mongo 数据库中的特定集合中删除重复记录?【英文标题】:How to delete duplicate record from a particular collection in a database in mongo? 【发布时间】:2019-09-20 13:39:54 【问题描述】:

架构 - 数据库:yelp_camp, 收藏:露营地, 集合中的记录数等于四

ISSUE - 集合中存在重复记录,希望删除除第一个以外的所有记录。

数据库集合快照, “_id”:ObjectId(“5cc9729f48ec2b0add99866e”),“名称”:“CampAliBaba101234”,“图像”:“https://photosforclass.com/download/flickr-2770447094”,“__v”:0 “_id”:ObjectId(“5cc974b46e587f0b00855b0d”),“名称”:“CampAliBaba101234”,“图像”:“https://photosforclass.com/download/flickr-2770447094”,“__v”:0 “_id”:ObjectId(“5cc9facd11f218081b57f8f0”),“名称”:“CampAliBaba101234”,“图像”:“https://photosforclass.com/download/flickr-2770447094”,“__v”:0 “_id”:ObjectId(“5cca658c5ecabc0a7ff79e4e”),“名称”:“CampAliBaba101234”,“图像”:“https://photosforclass.com/download/flickr-2770447094”,“__v”:0 尝试使用下面提到的代码,但徒劳无功,

在shell中尝试了下面提到的mongo查询, db.campgrounds.ensureIndex("name":1, unique:"true", dropDups:"true")

预期 - 应删除重复记录,且应仅存在一条唯一记录。

实际 - 返回以下错误, “好”:0, "errmsg" : "E11000 重复密钥错误集合:yelp_camp.campgrounds 索引:image_1 复制密钥: : \"https://photosforclass.com/download/flickr-2770447094\" ", “代码”:11000, “代号”:“重复密钥”

【问题讨论】:

***.com/questions/24430220/… 【参考方案1】:

试试这个

db.getCollection('Test').find(  
   "name":"CampAliBaba101234"
).forEach((data)=>  
   var i = 0; 
      db.getCollection('Test').find(     
      "name":"CampAliBaba101234"
      ).forEach((doc)=>     
      if (i>0)   db.getCollection('Test').remove(        
         _id:data._id
            ) 
        i++
      )
);

【讨论】:

我正在寻找一个可以在 shell 中使用的查询,即命令行你能帮我做同样的事情吗? 我刚刚在 Robo 3T 中尝试过,效果很好。让我检查一下。请在shell中尝试。如果有任何错误?

以上是关于如何从 mongo 数据库中的特定集合中删除重复记录?的主要内容,如果未能解决你的问题,请参考以下文章

如何从restapi中删除mongodb集合[重复]

如何删除 MongoDb 中的重复项?

从Python列表中的特定位置删除项目[重复]

从 Mongo DB 文档的数组中的对象数组中删除一个值

从表中的多个重复项中删除特定记录

Mongo DB删除重复数据文档实践