On this page
$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
字段值为5
或15
的所有文档。尽管您可以使用$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
字段保存以be
或st
开头的字符串或包含至少一个以be
或st
开头的元素的数组。
See also
find(), update(), $or, $set, $elemMatch.