如何只删除非唯一索引?

时间:2017-02-06 07:43:12

标签: mongodb mongodb-query

我的数据库中有以下索引(是的,我有几个)。

{
    "v" : 1,
    "key" : {
        "someUniqueField" : 1
    },
    "name" : "someUniqueField_1",
    "ns" : "MyDB.Collection"
}

但实际上,我想拥有一个独特的索引。我更改了新数据库的create index语句。但是现在我在不同的数据库中有不同版本的索引。

现在我想删除带有唯一的false索引(false或没有唯一字段,显示在getIndexes()输出中)。

此命令将独立于唯一标志删除索引。

db.collection.dropIndex("someUniqueField_1"); // or
db.collection.dropIndex({"someUniqueField": 1});

有类似的内容:

db.collection.dropIndex({"someUniqueField": 1}, {unique: false});

我知道我可以删除所有这些索引并创建一个新索引,或者如果存在错误的索引,我可以手动检查它。

但如果有可能的话,这对学习目的也很好。

1 个答案:

答案 0 :(得分:1)

这应该给你脚本吗?

db.a.getIndexes().forEach(function(k) { 
  if (k.key.unique != 1) {
    print("db.a.dropIndex(\"k.name\");");
  }
});