MongoDB 中 $in 的效率用法

MongDB 中 $in 查询操作符是非常强大的,但是在使用中有可能受 Mysql 的使用习惯所影响,导致忽略了 $in 的一些高级用法,比如对数组字段也可以使用 $in

本文对 $in 的使用进行详细的总结。

语法

1
{ field: { $in: [<value1>, <value2>, ... <valueN> ] } }

非数组 $in 数组

如果 field 是一个非数组,则会对遍历数组中的所有元素来进行匹配。因此,如果 $in 后面的数组过大,会导致性能问题。

可能对 field 来建立索引提高匹配速度

数组 $in 数组

field 的值也可以是一个数组,当 field 数组中至少有一个元素位于 $in 后面的数组中时,就匹配成功。

正则匹配

$in 后面的数组中的值可以是正则表达式,形式为 /pattern/。但是不能使用 $regex 操作表达式。

例:

1
db.inventory.find( { tags: { $in: [ /^be/, /^st/ ] } } )

参考

MongoDB-$in