$in

在本页面

  • 例子

  • 使用$in Operator 来 Match Values

  • 使用$in Operator 在 Array 中 Match 值

  • 将$in Operator 与正则表达式一起使用

  • $in

    • $in operator 选择字段的 value 等于指定 array 中的任何 value 的文档。要指定$in表达式,请使用以下原型:

有关不同 BSON 类型值的比较,请参阅指定的 BSON 比较 order。

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

如果field包含 array,则$in operator 选择field包含 array 的文档,该文档至少包含一个与指定 array 中的 value 匹配的元素(e.g. <value1><value2>,etc.)

在 version 2.6 中更改:MongoDB 2.6 删除了_ope的早期版本所存在的$in operator 的组合限制。

例子

使用$in Operator 来 Match Values

考虑以下 example:

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

此查询选择inventory集合中qty字段 value 为515的所有文档。虽然您可以使用$or operator 表达此查询,但在对同一字段执行相等性检查时,请选择$in operator 而不是$or operator。

使用$in Operator 在 Array 中 Match 值

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

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

然后,以下update()操作将sale字段 value 设置为true,其中tags字段包含 array,其中至少有一个元素与"appliances""school"匹配。

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

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

  • 查询 Array

  • 查询嵌入式文档的 Array

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

  • 查询文件

将$in Operator 与正则表达式一起使用

$in operator 可以使用/pattern/形式的正则表达式指定匹配值。你不能在$in中使用$regex operator 表达式。

考虑以下 example:

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

此查询选择inventory集合中的所有文档,其中tags字段包含以best开头的 string 或具有至少一个以best开头的元素的 array。

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