我有一个聚合mongodb查询
db.collection.aggregate([
{$match: {a: "a1", b: "b1"}},{$group: {...}},
{$sort: {...}}, {$limit: {10}}
])我在a和b上有一个复合索引,查询速度很快。
但是,当我将匹配更改为
$match: {$or: [{a: "a1", b: "b1"}, {a: "a2", b: "b2"}]}查询变得相当慢,而且似乎没有使用任何索引。
有没有办法1)重写查询以使用复合索引(作为单个查询)或2)强制它使用索引?
发布于 2015-01-22 04:47:23
我会尝试在聚合的开头添加一个排序步骤,看看它是否强制使用索引。
db.collection.aggregate([
{$sort: {a:1, b:1}},
{$match: {$or: [{a: "a1", b: "b1"}, {a: "a2", b: "b2"}]}},
...
])https://stackoverflow.com/questions/28074457
复制相似问题