如何从 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 数据库中的特定集合中删除重复记录?的主要内容,如果未能解决你的问题,请参考以下文章