我有成千上万份这样的文件:
{
"field_id" : "abcd",
"aField" : 0,
"parentList": [
{
"field": "value1",
"list": ["element1,element2"]
}
,
{
"field": "value2",
"list": ["element1, element3"]
}
]
}(这是我的数据库中一个大得多的文档的过半化版本,包含更多的字段。数据库包含数百万份文档)。下面是我想用于计数执行的筛选器:
{ 'parentList.0.list':
{ '$in':
[ 'element1',
'element2',
'element3',
'element4'
]
},
aField: { '$ne': 1 },
field_id: { '$in': [ 'abcd' ] }
}我想要做的是创建这样一个索引:
{"field_id" : 1, "parentList.list" :1, "aField" : 1}让查询使用它。但蒙戈实际上忽略了这一点。相反,mongo正在使用另一个索引,即
{"field_id":1, "anotherField":1}执行状态显示了这一阶段:
当然,如果mongo使用了正确的索引,我希望它已经从IXSCAN检索了20k文档,或者至少更接近这个值。
我只是不明白芒果为什么不使用那个指数。我还试图更改索引中字段的顺序,但没有成功。我用的是Mongo 4.4.6
发布于 2021-12-20 18:31:50
https://stackoverflow.com/questions/70426006
复制相似问题