小编Men*_*eni的帖子

单个数组元素与$ eq的Mongodb性能为$ in

在我们的代码中,为方便起见,我们使用类似的查询

db.collection.find({ "field": { $in: array } })
Run Code Online (Sandbox Code Playgroud)

即使array只包含一个元素.在这种情况下,我们可以简单地改写它

db.collection.find({ "field": "element" })
Run Code Online (Sandbox Code Playgroud)

我们认为这些查询的行为相同,但我们注意到,对于包含$or运算符和多个字段的复杂查询,同时explain()针对这两种情况显示相同的查询计划,实际运行查询会在简单情况下快速返回,而使用$in永久使用因为它可能正在使用不同的索引扫描.

为什么mongodb查询编译器不会将$in单个元素转换为相同的$eq?为什么explain()仍然会显示他们使用相同的索引扫描和提取,而实际运行查询显然使用不同的计划?

mongodb

5
推荐指数
1
解决办法
752
查看次数

标签 统计

mongodb ×1