关于具有这种结构的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,未分片