У меня есть следующий индекс в моих базах данных (да, у меня их пара).Как отказаться от уникального индекса?
{
"v" : 1,
"key" : {
"someUniqueField" : 1
},
"name" : "someUniqueField_1",
"ns" : "MyDB.Collection"
}
Но на самом деле, я хотел иметь уникальный индекс. Я изменил инструкцию создания индекса для более новых баз данных. Но теперь у меня разные версии этого индекса в разных базах данных.
Теперь я хочу удалить, таким образом, индексы с уникальным: false (или без уникального поля, отображаемого на выходе getIndexes()).
Эти команды будут отбрасывать индекс независимо от уникального флага.
db.collection.dropIndex("someUniqueField_1"); // or
db.collection.dropIndex({"someUniqueField": 1});
Есть ли что-то вроде:
db.collection.dropIndex({"someUniqueField": 1}, {unique: false});
Я знаю, что я мог бы бросить все эти показатели и создать новый, или я мог проверить его вручную, если неправильный индекс существует.
Но это было бы также полезно для учебных целей, если это возможно.
Btw: имя индекса одинаково для уникальных индексов и для уникальных индексов. – Sammy
вы можете сгенерировать список с помощью 'db.collection.indexes.find ({" unique ": false});' –
Эта команда не возвращает никакого результата 'db.collection.indexes.find ({})'. Даже с фильтрующей частью или без нее. Но когда я запускаю 'db.collection.getIndexes()', я нашел индексы, но их невозможно отфильтровать в команде db. Кажется, что я должен сделать это вручную. – Sammy