定义
$in返回一个布尔值,它可表示指定的值是否在数组中。
注意
本文档介绍
$in聚合操作符。对于$in查询操作符,请参阅 $in(查询谓词操作符)。{ $in: [ <expression>, <array expression> ] } 与
$in查询操作符不同,聚合$in操作符不支持正则表达式匹配。例子结果{ $in: [ 2, [ 1, 2, 3 ] ] }true{ $in: [ "abc", [ "xyz", "abc" ] ] }true{ $in: [ "xy", [ "xyz", "abc" ] ] }false{ $in: [ [ "a" ], [ "a" ] ] }false{ $in: [ [ "a" ], [ [ "a" ] ] ] }true{ $in: [ /^a/, [ "a" ] ] }false{ $in: [ /^a/, [ /^a/ ] ] }true
行为
$in 在以下任一情况均会失败并出现错误:如果未向 $in 表达式提供实际两个参数,或是第二个参数未解析为数组。
例子
以下示例使用 sample_mflix 示例数据集中的 movies 集合。有关如何将此数据集加载到部署中的详细信息,请参阅 加载示例数据集。
此聚合操作会查看每部电影中的 genres大量,并确定是否存在字符串 "Drama":
db.movies.aggregate( [ { $match: { runtime: { $gt: 1000 } } }, { $project: { _id: 0, title: 1, hasDrama: { $in: [ "Drama", "$genres" ] } } } ] )
[ { title: 'Centennial', hasDrama: true }, { title: 'Baseball', hasDrama: false } ]