定义
返回特定窗口中文档的最小值。
注意
消歧
本页介绍了用作窗口函数的 $min。
您还可以在其他上下文中使用 $min:
$min (accumulator),用于分组以返回一群组文档中的最小值。$min (expression),返回大量中的最小值。
语法
{ $setWindowFields: { ... output: { <field>: { $min: <expression> } } } }
行为
结果类型
空值或缺失值
如果窗口中的某些文档具有该字段的 null 值或缺少该字段,$min 会忽略它们。它仅考虑非空值和非缺失值。
如果窗口中的所有文档都具有该字段的 null 值或缺少该字段,则 $min 返回 null。
例子
本页上的示例使用 sample_mflix 数据集中的数据。有关如何将此数据集加载到自管理MongoDB 部署中的详细信息,请参阅加载样本数据集。如果对示例数据库进行了任何修改,则可能需要删除并重新创建数据库才能运行本页上的示例。
此示例使用 $setWindowFields 向每个包含同年上映的评分最差电影的 IMDb 评分的文档添加一个字段:
db.movies.aggregate( [ { $match: { year: { $in: [ 1999, 2000, 2001 ] }, "imdb.rating": { $lte: 3.5 } } }, { $setWindowFields: { partitionBy: "$year", sortBy: { title: 1 }, output: { minimumRatingInYear: { $min: "$imdb.rating", window: { documents: [ "unbounded", "unbounded" ] } }, rankInYear: { $documentNumber: {} } } } }, { $project: { _id: 0, title: 1, year: 1, imdb: { rating: "$imdb.rating" }, minimumRatingInYear: 1, rankInYear: 1 } }, { $sort: { year: 1, title: 1 } } ] )
上述管道:
使用
$match从 1999、2000 和 2001 中过滤IMDb 评分为 3.0 或更低的电影。使用
$setWindowFields按year对电影进行分区,并按title进行排序。该阶段使用文档窗口为[ "unbounded", "unbounded" ]的$min来创建minimumRatingInYear,其中保存了整个分区的最小imdb.rating,并使用$documentNumber将每个分区的行号 (rankInYear) 分配给每个文档。使用
$project在输出中包含title、year、imdb、minimumRatingInYear和rankInYear。使用
$sort按年份和标题对结果进行排序。