我在MongoDB中有一个集合,其中大约有(~3百万条记录)。我的样本记录看起来像这样:
{ "_id" = ObjectId("50731xxxxxxxxxxxxxxxxxxxx"),
"source_references" : [
"_id" : ObjectId("5045xxxxxxxxxxxxxx"),
"name" : "xxx",
"key" : 123
]
}
我的集合中有很多重复记录,这些记录的source_references.key
相同。(我指的是重复的source_references.key
而不是_id
)。
我想基于source_references.key
删除重复记录,我正在考虑编写一些PHP代码来遍历每个记录并删除存在的记录。
有没有办法在Mongo内部命令行中删除重复项?
dropDups
选项仅适用于创建唯一索引时。未来插入具有重复键的记录将生成重复键错误。 - StenniedropDups
的明显原因是:不清楚会删除哪个重复项,更重要的是删除文档是创建索引的意外副作用。最糟糕的情况是:如果在不存在的字段上(例如由于拼写错误)使用dropDups:true
创建唯一索引,则索引值将为null
,并且您将只剩下一个文档在集合中。 - Stennie