$in

在本页面

$in

$in操作符选择字段值等于指定数组中任何值的文档。要指定一个$in表达式,使用下面的原型:

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

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

如果field持有的阵列,则$in操作符选择字段中包含至少一个与指定数组中的值匹配的元素的文档(例如,<value1><value2>等)

例子

使用$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字段包含以best开头的字符串,或至少有一个以best开头的元素的数组。

也可以看看 find()update()$or$set$elemMatch

译者:李冠飞

校对:

最后更新于