mongodb - встроенное поле и встроенная индексация документа - PullRequest
0 голосов
/ 18 октября 2018

Так что мне интересно, если бы я создал индекс для документа, он также по своей сути создаст индекс и для встроенных полей?

Так, например, для:

{
  name: {
          first: "Yukihiro",
          last: "Matsumoto"
        }
}

Если это был встроенный индекс документа, выполнение поиска с помощью:

   {
     "name.first": "Yukihiro",
     "name.last": "Matsumoto"
   }

приведет к его поиску с использованием индекса или к документам O (n)?

1 Ответ

0 голосов
/ 18 октября 2018

Да, если документ не превышает допустимый размер индекса - https://docs.mongodb.com/manual/core/index-single/#create-an-index-on-embedded-document

Вы можете проверить, что определенный запрос использует индекс с функцией 'объяснения' в запросе."stage": "IXSCAN" указывает, что он использовал индекс.

"winningPlan" : {
        "stage" : "FETCH",
        "inputStage" : {
                "stage" : "IXSCAN",
                "keyPattern" : {
                        "type" : 1
                },
                "indexName" : "type_1",
                "isMultiKey" : false,
                "isUnique" : false,
                "isSparse" : false,
                "isPartial" : false,
                "indexVersion" : 1,
                "direction" : "forward",
                "indexBounds" : {
                        "type" : [
                                "[\"teacher\", \"teacher\"]"
                        ]
                }
        }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...