Создание индекса Mongodb, только если он еще не существует - PullRequest
0 голосов
/ 14 апреля 2020

Есть ли команда, которую я могу использовать через javascript в оболочке mon go, которую можно использовать, чтобы проверить, существует ли определенный индекс в моем mongodb. Я строю файл сценария, который будет создавать индексы. Мне бы хотелось, чтобы, если я запускаю этот файл несколько раз, тогда уже существующие индексы не воссоздаются. Я думаю об использовании этого, будет ли это работать:

if(db.collection.getIndexes().find({'name':'index_name'}).count()==0) { 
    db.collection.createIndex( { abc: 1, def: 1 } , { name: "index_name" } ) 
}

или есть какой-нибудь лучший способ сделать это? Также, если приведенный выше код неверен, пожалуйста, помогите мне с этой задачей.

1 Ответ

1 голос
/ 14 апреля 2020

Я не уверен, что сначала нужно проверить, если вы не планируете кэшировать этот ответ.

Когда вы вызываете db.collection.createIndex, он не будет воссоздавать уже существующий индекс, он вернет ok:1 с "note" : "all indexes already exist".

Это займет ту же блокировку базы данных, что и вызов db.collection.getIndexes или команды базы данных listIndexes. Нет особой разницы в том, чтобы проверить, существует ли индекс первым, или просто попытаться его создать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...