Лучшее руководство по MongoDB расширенный индексации в 2024 году. В этом руководстве вы можете изучить Индексированные поля массива,Индекс поля поддокументе,

MongoDB расширенный индексации

Рассмотрим следующий документ коллекции (пользователей):

{
   "address": {
      "city": "Los Angeles",
      "state": "California",
      "pincode": "123"
   },
   "tags": [
      "music",
      "cricket",
      "blogs"
   ],
   "name": "Tom Benzamin"
}

Приведенный выше документ содержит вложенные документы, а также обратиться массив тегов.


Индексированные поля массива

Предположим, мы извлекаем пользователем на основе метки, для которых мы должны индексировать теги массива коллекции.

Создание индекса в массиве, массив потребностей для каждого поля в свою очередь индексируется. Поэтому, когда мы создаем индекс для тегов массива, это обеспечит музыку, крикет, блоги три значения, чтобы создать отдельный индекс.

Создание индекса массива, используйте следующую команду:

>db.users.ensureIndex({"tags":1})

После создания индекса, мы можем получить коллекцию метки поля:

>db.users.find({tags:"cricket"})

Мы использовали для проверки использования индекса, вы можете использовать команду объяснить:

>db.users.find({tags:"cricket"}).explain()

Результаты команды покажет "курсор": "BtreeCursor tags_1", он сказал, что индекс был использован.


Индекс поля поддокументе

Предположим, что нам нужно город, штат, поле Pincode для получения документов, так как эти поля являются полями поддокумент, поэтому нам необходима индексация целого документа.

Создание индекса для трех подполей документа, команда выглядит следующим образом:

>db.users.ensureIndex({"address.city":1,"address.state":1,"address.pincode":1})

После того, как индекс создан, мы можем использовать поле для извлечения данных поддокументы:

>db.users.find({"address.city":"Los Angeles"})   

Помните выражение запроса должно следовать порядку по указанному индексу. Таким образом, индекс, созданный выше, будет поддерживать следующий запрос:

>db.users.find({"address.city":"Los Angeles","address.state":"California"}) 

Также поддерживает следующий запрос:

>db.users.find({"address.city":"LosAngeles","address.state":"California","address.pincode":"123"})
MongoDB расширенный индексации
10/30