gpt4 book ai didi

mongodb - 删除 MongoDB 中的重复项

转载 作者:行者123 更新时间:2023-12-02 03:25:40 25 4
gpt4 key购买 nike

我有一个名为“contact_id”字段的集合。在我的收藏中,我有带有此 key 的重复寄存器。

如何删除重复项,从而只剩下一个寄存器?

我已经尝试过:

db.PersonDuplicate.ensureIndex({"contact_id": 1}, {unique: true, dropDups: true}) 

但是没有用,因为 MongoDB 3.x 中不再提供 dropDups 函数

我使用的是3.2

最佳答案

是的,dropDups 已经永远消失了。但你绝对可以通过一点点努力实现你的目标。

您需要首先找到所有重复的行,然后删除除第一个之外的所有重复行。

db.dups.aggregate([{$group:{_id:"$contact_id", dups:{$push:"$_id"}, count: {$sum: 1}}},
{$match:{count: {$gt: 1}}}
]).forEach(function(doc){
doc.dups.shift();
db.dups.remove({_id : {$in: doc.dups}});
});

如您所见,doc.dups.shift() 将从数组中删除第一个 _id,然后删除 dups 数组中剩余 _id 的所有文档。

上面的脚本将删除所有重复的文档。

关于mongodb - 删除 MongoDB 中的重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35707496/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com