使用带有多个索引数组字段值的$ in时,对MongoDB的查询速度慢。
1)数组中1个元素的查询速度很快(<15 ms)
db.collection.count ( { tag : { $in : [ 1 ] } })
我重复了对“tag”的所有值的查询,并且所有查询都很快。
i = 1; while (i < 1000) {
db.collection.count( { tag : { $in : [ i ] } });
i++;
}
2)具有2个或更多元素的查询缓慢(> 1m50s)
db.collection.count ( { tag : { $in : [ 1, 2, 3 ] } } )
一些信息:
答案 0 :(得分:0)
MongoDB使用COUNT_SCAN作为$ in数组中的一个值,使用FETCH获取$ in数组内的多个值。这是MongoDB中使用$ in运算符进行覆盖计数查询的错误。