我的数据库中有以下索引(是的,我有几个)。
{
"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});
我知道我可以删除所有这些索引并创建一个新索引,或者如果存在错误的索引,我可以手动检查它。
但如果有可能的话,这对学习目的也很好。
答案 0 :(得分:1)
这应该给你脚本吗?
db.a.getIndexes().forEach(function(k) {
if (k.key.unique != 1) {
print("db.a.dropIndex(\"k.name\");");
}
});