适用对象:
MongoDB vCore
如果指定的值小于字段的当前值,则 $min
运算符会将字段的值更新为指定值。 如果该字段不存在, $min
请创建字段并将其设置为指定值。 此运算符可用于维护最小阈值或跟踪最低值。
语法
$min
运算符的语法如下:
{
$min: {
<field1>: <value1>,
<field2>: <value2>,
...
}
}
参数
DESCRIPTION | |
---|---|
field |
要以最小值更新的字段的名称。 |
value |
要与当前字段值进行比较的值。 仅当此值较小时,才会更新字段。 |
示例:
让我们了解 stores
数据集中的示例 json 的用法。
{
"_id": "26afb024-53c7-4e94-988c-5eede72277d5",
"name": "First Up Consultants | Microphone Bazaar - South Lexusland",
"staff": {
"totalStaff": {
"fullTime": 14,
"partTime": 8
}
},
"sales": {
"totalSales": 83865,
"salesByCategory": [
{
"categoryName": "Lavalier Microphones",
"totalSales": 44174
},
{
"categoryName": "Wireless Microphones",
"totalSales": 39691
}
]
}
}
示例 1:设置最低员工要求
设置最低员工要求,仅在当前值较高时更新。
db.stores.updateOne(
{ "_id": "26afb024-53c7-4e94-988c-5eede72277d5" },
{
$min: {
"staff.totalStaff.fullTime": 10
}
}
)
由于当前 fullTime
值为 14,并且 10 小于 14,因此字段将更新为 10。
示例 2:多个字段更新
使用最小值同时更新多个字段。
db.stores.updateOne(
{ "_id": "26afb024-53c7-4e94-988c-5eede72277d5" },
{
$min: {
"staff.totalStaff.partTime": 12,
"sales.totalSales": 50000
}
}
)
在这种情况下:
-
partTime
(8) 自 12 > 8 日起更新为 8 (无变化) -
totalSales
(83865) 自 50000 83865 起将更新为 50000 <
示例 3:创建新字段
如果字段不存在, $min
请使用指定的值创建它。
db.stores.updateOne(
{ "_id": "26afb024-53c7-4e94-988c-5eede72277d5" },
{
$min: {
"staff.minStaffRequired": 15,
"sales.minimumSalesTarget": 30000
}
}
)
示例 4:使用日期
设置跟踪最早事件的最小日期。
db.stores.updateOne(
{ "_id": "26afb024-53c7-4e94-988c-5eede72277d5" },
{
$min: {
"lastInventoryCheck": new Date("2024-01-15"),
"firstSaleDate": new Date("2023-06-01")
}
}
)
示例 5:更新数组元素
使用位置运算符更新数组元素中的最小值。
db.stores.updateOne(
{
"_id": "26afb024-53c7-4e94-988c-5eede72277d5",
"sales.salesByCategory.categoryName": "Lavalier Microphones"
},
{
$min: {
"sales.salesByCategory.$.totalSales": 40000
}
}
)
执行这些作后,文档将按如下所示进行更新:
{
"_id": "26afb024-53c7-4e94-988c-5eede72277d5",
"name": "First Up Consultants | Microphone Bazaar - South Lexusland",
"staff": {
"totalStaff": {
"fullTime": 10,
"partTime": 8
},
"minStaffRequired": 15
},
"sales": {
"totalSales": 50000,
"minimumSalesTarget": 30000,
"salesByCategory": [
{
"categoryName": "Lavalier Microphones",
"totalSales": 40000
},
{
"categoryName": "Wireless Microphones",
"totalSales": 39691
}
]
},
"lastInventoryCheck": ISODate("2024-01-15T00:00:00.000Z"),
"firstSaleDate": ISODate("2023-06-01T00:00:00.000Z")
}