我在mongodb中有两个索引。第一个索引字段是";字符串";并且第二索引字段是"0";日期";。字符串字段是部分字段。为什么比我查询";字符串";用";日期";字段"当仅";字符串";?如何创建替代方案?
价值2亿:
第一个查询:db.runCommand({explain:{count:"mycollection",query:{fruit:"apple"}}});
查询结果:{executionTimeMillis:80,计数:39509}
第二个查询:db.runCommand({explain:{count:"mycollection",query:{fruit:"apple",date:{$gte:ISODate('2022-03-22T00:00:00.000+00:00')}}}});
查询结果:{executionTimeMillis:3402,计数:22383}
我是单独使用的。
正如@R2D2所说:
db.mycollection.createIndex({fruit: 1,date:-1},{partialFilterExpression:{fruit:{$exists: true }}});
使用这种方法使它更快。此外,指数规模几乎下降了一半。