Нет, такой команды нет.
Но не бойтесь называть createIndex
слишком часто. The documentation гарантирует, что если индекс с теми же настройками уже существует, ничего не произойдет. Таким образом, вы можете прикрепить его к некоторым общим операциям базы данных, выполняемым новыми пользователями. Это неважно, когда его звонят не один раз.
Чтобы подчеркнуть это поведение, метод обычно назывался ensureIndex
, но это имя устарело.
Кстати: Наличие другой коллекции для каждого клиента - довольно необычная архитектура. У этого есть некоторые недостатки, такие как проблема с индексами и другой конфигурацией уровня коллекций, которую вы уже обнаружили, но также и другие, такие как неспособность выполнять какие-либо запросы, которые используют данные от нескольких клиентов. При использовании механизма хранения по умолчанию существует преимущество, заключающееся в том, что клиенты не могут блокировать друг друга с помощью блокировок коллективного доступа, но при использовании механизма WiredTiger это преимущество устарело, поскольку WiredTiger блокируется только на уровне документа.
Более традиционный подход состоит в том, чтобы иметь одну коллекцию для всех пользователей и иметь поле в каждом документе, в котором указывается, какой пользователь владеет документом и который является частью всех индексов, используемых пользовательскими запросами.
['securityIndex()'] (http://mongodb.github.io/node-mongodb-native/2.0/api/Collection.html#ensureIndex) или ['createIndexes()'] (http: // mongodb.github.io/node-mongodb-native/2.0/api/Collection.html#createIndexes)? – robertklep
Я знаю, какая команда создает индекс. Вопрос в том, как создать индекс автоматически, поскольку я не знаю, когда создается коллекция. – Asher