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/ ] } } ) |