如果$in
运算符用于单独查询每个值的值列表,反之亦然,那么MongoDB的性能有何不同。
E.g。如果我有一些像values = [a, b, c, d, e, f, g]
这样的值的列表,那么哪种查询方式会更好?
选项a)
find({value: [$in: values]})
选项b)
values.each { val ->
find({value: val})
}
答案 0 :(得分:2)
简而言之,$in
非常快,除非阵列很大(比如经验中的几千个,你的里程可能会有所不同)。
就像@Sammaye已经指出的那样,每个查询都有相当大的开销(网络/线程同步,实际BSON消息的序列化,网络延迟,游标管理等),所以我敢打赌$in
将几乎所有与实践相关的案例都要快。如果数组变得庞大,那么执行一些较大的in
查询而不是一个巨大的in
查询可能会更好。