在本页面
例子
$in
$in操作符选择字段值等于指定数组中任何值的文档。要指定一个$in表达式,使用下面的原型:
有关不同BSON类型值的比较,请参见指定的BSON比较顺序。
{ field: { $in: [<value1>, <value2>, ... <valueN> ] } }
如果field持有的阵列,则$in操作符选择字段中包含至少一个与指定数组中的值匹配的元素的文档(例如,<value1>,<value2>等)
field
<value1>
<value2>
考虑以下示例:
db.inventory.find( { qty: { $in: [ 5, 15 ] } } )
该查询选择inventory 集合中qty字段值为5或的15所有文档。尽管可以使用$or运算符表示此查询 ,但是在同一字段上执行相等性检查时,请选择$in运算符而不是$or运算符。
inventory
qty
5
15
$or
集合inventory包含包含字段的文档, tags如下所示:
tags
{ _id: 1, item: "abc", qty: 10, tags: [ "school", "clothing" ], sale: false }
然后,下面的update()操作将设定的sale字段值true,其中tags字段保持与至少一个元素匹配任一阵列"appliances"或 "school"。
update()
sale
true
"appliances"
"school"
有关查询数组的其他示例,请参见:
查询数组
查询嵌入式文档数组
有关查询的其他示例,请参见:
查询文件
$in操作符可利用形式的正则表达式匹配指定值/pattern/。您_不能在$in中_使用$regex运算符表达式。
/pattern/
$regex
此查询选择inventory集合中的所有文档,其中tags字段包含以be或st开头的字符串,或至少有一个以be或st开头的元素的数组。
be
st
也可以看看 find(),update(),$or,$set,$elemMatch。
find()
$set
$elemMatch
译者:李冠飞
校对:
最后更新于 4年前
db.inventory.update( { tags: { $in: ["appliances", "school"] } }, { $set: { sale:true } } )
db.inventory.find( { tags: { $in: [ /^be/, /^st/ ] } } )