многоуровневый вложенный индекс mongodb - PullRequest
0 голосов
/ 08 января 2019

Относительно документов Монго с такой структурой:

{  "_id":"123",  "level1_nested_collection": [
       {
       "start": <some iso date>,
       "end": <some iso date>,
       "level2_nested_collection": [
            {
             "name":<some string>
             "value"<come string>
            }]]
      }

На самом деле, я использую этот индекс для некоторых запросов:

{
    "level1_nested_collection.level2_nested_collection.value" : 1
}

Но, в некоторых случаях, у меня плохие показатели, потому что у нас может быть много документов для искомого значения (docsExamined). В общем, запрос также имеет критерии для дат структуры level1. например:

{
  "level1_nested_collection": {
    "$elemMatch": {
      "level2_nested_collection": {
        "$elemMatch": {
          "name": "foo",
          "value": "3823184"
        }
      }
    },
    "start": {
      "$lte": {
        "$date": "2019-01-02T20:38:56.000Z"
      }
    },
    "end": {
      "$gt": {
        "$date": "2019-01-02T20:38:56.000Z"
      }
    }
  }
}

С последним запросом могу ли я воспользоваться этим индексом:

{
    "level1_nested_collection.start" : 1,
    "level1_nested_collection.end" : 1,
    "level1_nested_collection.level2_nested_collection.value" : 1
}

MongoDB версия 3.2, коллекция около 500Mdocs, без ограждения

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