$in 运算符是否有一些内置记忆
Does $in operator has some build in memoization
我知道我可以使用 $in
在特定字段上搜索多个值。例如,如果我有这个数组怎么办:
[1, 2, 2, 2, 3, 4]
假设这就是我们要查询的 ID。
我的问题是,mongodb 是否为每个元素查询 6 次,或者 mongodb 是否有一些内置记忆,所以它只查询 4 次,因为 2
在这里 3 次所以不用再查询了
explain
帮手可以说清楚:
PRIMARY> db.collection.explain().find({a:{$in:[1, 2, 2, 2, 3, 4]}}).next().queryPlanner
{
"plannerVersion" : 1,
"namespace" : "test.collection",
"indexFilterSet" : false,
"parsedQuery" : {
"a" : {
"$in" : [
1,
2,
3,
4
]
}
},
"winningPlan" : {
"stage" : "EOF"
},
"rejectedPlans" : [ ]
}
我知道我可以使用 $in
在特定字段上搜索多个值。例如,如果我有这个数组怎么办:
[1, 2, 2, 2, 3, 4]
假设这就是我们要查询的 ID。
我的问题是,mongodb 是否为每个元素查询 6 次,或者 mongodb 是否有一些内置记忆,所以它只查询 4 次,因为 2
在这里 3 次所以不用再查询了
explain
帮手可以说清楚:
PRIMARY> db.collection.explain().find({a:{$in:[1, 2, 2, 2, 3, 4]}}).next().queryPlanner
{
"plannerVersion" : 1,
"namespace" : "test.collection",
"indexFilterSet" : false,
"parsedQuery" : {
"a" : {
"$in" : [
1,
2,
3,
4
]
}
},
"winningPlan" : {
"stage" : "EOF"
},
"rejectedPlans" : [ ]
}