mongodb多级嵌套索引

时间:2019-01-08 17:58:00

标签: mongodb mongodb-query query-performance

关于具有这种结构的Mongo文档:

{  "_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,未分片

0 个答案:

没有答案