#mongodb
Вопрос:
У меня есть коллекция с пользователями в MongoDB, и я хочу создать индексы для поля электронной почты, я делаю это в MongoDB Compass, указав параметр «Построить индекс в фоновом режиме», но когда я это делаю, создается составной индекс: Образец документа:
{
"_id":{
"$oid":"6060d34aaf85dd1071ca6406"
},
"email":"example@mail.com",
"password":"somehash",
"role":"admin",
"state":true,
"createdAt":{
"date":{
"$date":"2021-02-08T19:13:59.399Z"
},
"timestamp":1612811639.399607
},
"extraData":{
"jwt":"somejwt",
"language":"en"
}
}
Существует только одно поле электронной почты, почему создается соединение?
И правильно ли я понимаю, что если у меня много операций чтения-записи в базе данных, мне нужно создавать все индексы в фоновом режиме?
Ответ №1:
Это связано text
с тем, что типы индексов являются составными индексами, даже если вы указываете только один ключ.
Если вы примените обычный индекс для того же ключа, он будет отображаться как обычный индекс.
Если вы хотите, чтобы все ваши операции чтения/записи не затрагивались при построении индекса, вы должны использовать эту background: true
опцию. Но на это уйдет больше времени.
Комментарии:
1. Хорошо, что делать, если мне нужно создать текстовые индексы для нескольких полей в документе? Нужно ли мне объединять их в один индекс?
2. В коллекции может быть только один текстовый индекс