我正在尝试使用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" ] }
有没有办法做到这一点,只有精确的副本(在我的示例集合中只有第一个或第二个条目)被删除?
答案 0 :(得分:0)
据我所知,此功能在数组中不起作用。您插入数据时不能只使用 $ addToSet 的任何特殊原因?
检查此问题,或许可以帮助您MongoDB: Unique index on array element's property