该 $inc 运算符按指定量递增字段的值。 如果该字段不存在, $inc 请创建该字段并将其设置为指定的值。 运算符接受正值和负值,以便分别递增和递减。
Syntax
运算符的 $isArray 语法如下所示:
{
$inc: {
<field1>: <amount1>,
<field2>: <amount2>,
...
}
}
参数
| 参数 | Description |
|---|---|
field |
要递增的字段的名称。 |
amount |
增量值。 必须是一个数字(递增为正,递减为负)。 |
例子
请考虑商店集合中的这个示例文档。
{
"_id": "40d6f4d7-50cd-4929-9a07-0a7a133c2e74",
"name": "Proseware, Inc. | Home Entertainment Hub - East Linwoodbury",
"staff": {
"totalStaff": {
"fullTime": 19,
"partTime": 20
}
},
"sales": {
"totalSales": 151864,
"salesByCategory": [
{
"categoryName": "Sound Bars",
"totalSales": 2120
},
{
"categoryName": "Home Theater Projectors",
"totalSales": 45004
}
]
}
}
示例 1:递增员工计数
若要将全职员工计数增加 3,请使用 fullTime 员工字段中的 $inc 运算符,值为 3。
db.stores.updateOne(
{ "_id": "40d6f4d7-50cd-4929-9a07-0a7a133c2e74" },
{
$inc: {
"staff.totalStaff.fullTime": 3
}
}
)
示例 2:减少和增加值
若要将兼职员工减少 2,总销售额增加 5000 人,请分别对两个字段使用$inc运算符,其值为 -2 和 5000。
db.stores.updateOne(
{ "_id": "40d6f4d7-50cd-4929-9a07-0a7a133c2e74" },
{
$inc: {
"staff.totalStaff.partTime": -2,
"sales.totalSales": 5000
}
}
)
示例 3:创建新字段
如果字段不存在, $inc 请使用指定的值创建它。
db.stores.updateOne(
{ "_id": "40d6f4d7-50cd-4929-9a07-0a7a133c2e74" },
{
$inc: {
"staff.contractorCount": 5,
"sales.monthlyTarget": 200000
}
}
)
示例 4:递增数组元素值
使用位置运算符更新 salesByCategory 数组中的特定销售数据。
db.stores.updateOne(
{
"_id": "40d6f4d7-50cd-4929-9a07-0a7a133c2e74",
"sales.salesByCategory.categoryName": "Sound Bars"
},
{
$inc: {
"sales.salesByCategory.$.totalSales": 500
}
}
)
执行这些作后,文档将更新如下:
{
"_id": "40d6f4d7-50cd-4929-9a07-0a7a133c2e74",
"name": "Proseware, Inc. | Home Entertainment Hub - East Linwoodbury",
"staff": {
"totalStaff": {
"fullTime": 22,
"partTime": 18
},
"contractorCount": 5
},
"sales": {
"totalSales": 156864,
"monthlyTarget": 200000,
"salesByCategory": [
{
"categoryName": "Sound Bars",
"totalSales": 2620
},
{
"categoryName": "Home Theater Projectors",
"totalSales": 45004
}
]
}
}
相关内容
- 查看用于 从 MongoDB 迁移到 Azure DocumentDB 的选项。
- 详细了解 与 MongoDB 的功能兼容性。