MongoDB:删除带有数组的重复文档

时间:2015-02-09 18:23:26

标签: arrays mongodb duplicates

我正在尝试使用ensureIndex和dropDups删除集合中的所有重复项,但此方法似乎不适用于数组。 例如,如果我有一个如下所示的集合:

{ "_id" : ObjectId("54d8f889e3fdfe0cd8b769ed"), "field1" : "a", "field2" : [ "a", "b" ] }
{ "_id" : ObjectId("54d8f89be3fdfe0cd8b769ee"), "field1" : "a", "field2" : [ "a", "b" ] }
{ "_id" : ObjectId("54d8f8a3e3fdfe0cd8b769ef"), "field1" : "a", "field2" : [ "a", "c" ] }
{ "_id" : ObjectId("54d8f8abe3fdfe0cd8b769f0"), "field1" : "a", "field2" : [ "b", "a" ] }
{ "_id" : ObjectId("54d8f8c5e3fdfe0cd8b769f1"), "field1" : "b", "field2" : [ "a", "b" ] }

并像这样使用ensureIndex:

> db.test.ensureIndex({field1: 1, field2: 1}, {unique: true, dropDups: true})

结果将是:

> db.test.find()
{ "_id" : ObjectId("54d8f89be3fdfe0cd8b769ee"), "field1" : "a", "field2" : [ "a", "b" ] }
{ "_id" : ObjectId("54d8f8c5e3fdfe0cd8b769f1"), "field1" : "b", "field2" : [ "a", "b" ] }

有没有办法做到这一点,只有精确的副本(在我的示例集合中只有第一个或第二个条目)被删除?

1 个答案:

答案 0 :(得分:0)

据我所知,此功能在数组中不起作用。您插入数据时不能只使用 $ addToSet 的任何特殊原因?

检查此问题,或许可以帮助您MongoDB: Unique index on array element's property