$min
聚合运算符用于返回最小值。$min
对于不同的类型的值使用BSON的比较顺序。
$min
可以用于下面的这些阶段:
$addFields
$bucket
$bucketAuto
$group
$match
$project
$replaceRoot
$replaceWith
$set
$setWindowFields
语法
当用于$bucket
、$bucketAuto
、$group
、$setWindowFields
阶段时,$min
使用下面的语法:
{
$min: <expression> }
在用于其他阶段时,使用的语法如下:
-
指定一个操作数的情况
{ $min: <expression> }
-
指定一个数组操作数的情况
{ $min: [ <expression1>, <expression2> ... ] }
使用
空值和缺失值的处理
对于部分文档(注意不是全部哦)中字段为null
或缺失的情况,$min
运算符只处理非空且非缺失的字段。如果所有文档相关的字段为空或缺失,$min
返回的最小值是null
。
数组操作数的处理
对于$group
和$setWindowFields
阶段,如果表达式解析为数组,$min
不会去遍历数组,而是把数组当做一个整体来处理。
对于其他阶段:
- 对于单个操作数解析为数组的情况,
$min
会遍历数组返回最小值。 - 对于数组操作数,如果元素被解析为数组,
$min
也不会对数组进行遍历,而是把它当做一个整体。
举例
在$group阶段使用
sales
集合有下列文档:
{
"_id" : 1, "item" : "abc", "price" : 10, "quantity" : 2, "date" : ISODate("2014-01-01T08:00:00Z") }
{
"_id" : 2, "item" : "jkl", "price" : 20, "quantity" : 1, "date" : ISODate("2014-02-03T09:00:00Z") }
{
"_id" : 3, "item" : "xyz", "price" : 5, "quantity" : 5, "date" : ISODate("2014-02-03T09:05:00Z") }
{
"_id" : 4, "item" : "abc", "price" : 10, "quantity" : 10, "date" : ISODate("2014-02-15T08:00:00Z") }
{
"_id" : 5, "item" : "xyz", "price" : 5, "quantity" : 10, "date" :