在索引字段上运算符中MongoDB $的效率

时间:2014-02-03 13:22:40

标签: mongodb groovy

如果$in运算符用于单独查询每个值的值列表,反之亦然,那么MongoDB的性能有何不同。

E.g。如果我有一些像values = [a, b, c, d, e, f, g]这样的值的列表,那么哪种查询方式会更好?

选项a)

find({value: [$in: values]})

选项b)

values.each { val ->
    find({value: val})
}

1 个答案:

答案 0 :(得分:2)

简而言之,$in非常快,除非阵列很大(比如经验中的几千个,你的里程可能会有所不同)。

就像@Sammaye已经指出的那样,每个查询都有相当大的开销(网络/线程同步,实际BSON消息的序列化,网络延迟,游标管理等),所以我敢打赌$in将几乎所有与实践相关的案例都要快。如果数组变得庞大,那么执行一些较大的in查询而不是一个巨大的in查询可能会更好。