$in

在本页面

有关不同 BSON 类型值的比较,请参见指定的 BSON 比较 Sequences

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

如果field拥有一个数组,则$in运算符选择其field拥有一个数组的文档,该数组包含至少一个与指定数组中的值匹配的元素(例如<value1><value2>等)。

在 2.6 版中进行了更改:MongoDB 2.6 删除了该操作符earlier versions所存在的$in操作符的组合限制。

Examples

使用$ in 运算符来匹配值

考虑以下示例:

db.inventory.find( { qty: { $in: [ 5, 15 ] } } )

此查询选择inventory集合中qty字段值为515的所有文档。尽管您可以使用$or运算符表示此查询,但是在同一字段上执行相等性检查时,请选择$in运算符而不是$or运算符。

使用$ in 运算符来匹配数组中的值

集合inventory包含包含字段tags的文档,如下所示:

{ _id: 1, item: "abc", qty: 10, tags: [ "school", "clothing" ], sale: false }

然后,以下update()操作会将sale字段值设置为true,其中tags字段保存一个数组,该数组具有至少一个与"appliances""school"匹配的元素。

db.inventory.update(
                     { tags: { $in: ["appliances", "school"] } },
                     { $set: { sale:true } }
                   )

有关查询数组的其他示例,请参见:

有关查询的其他示例,请参见:

将$ in 运算符与正则表达式一起使用

$in运算符可以使用格式/pattern/的正则表达式指定匹配值。您不能$in内使用$regex运算符表达式。

考虑以下示例:

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

此查询选择inventory集合中的所有文档,其中tags字段保存以best开头的字符串或包含至少一个以best开头的元素的数组。

首页