"$inc"
1.假设我们创建了一个关于游戏的集合,将游戏和变化的分数都存储在了里面。当用户玩弹球游戏时,我们可以插入一个包含游戏名称和玩家的文档来标识不同的游戏:
db.games.insertOne({"game" : "pinball", "user" : "joe"})

当小球撞到砖块时,就会给玩家加分。分数可以随便给,这里约定玩家得分的基数为 50。可以使用 "$inc"
db.games.updateOne({"game" : "pinball", "user" : "joe"},{"$inc" : {"score" : 50}})
如果小球落入了加分区,要加 100 00 分。可以给 "$inc"
db.games.updateOne({"game" : "pinball", "user" : "joe"},{"$inc" : {"score" : 10000}})
和 "$set" 用法类似, "$inc" 是专门用来对数字进行递增和递减操作的。 "$inc"
db.games.updateOne({"game" : "pinball", "user" : "joe"},{"$inc" : {"score" : "100"}})
可以看到字符串类型是不行的。
2.目前不支持多个键的更新
db.products.insertOne(
{
_id: 1,
sku: "abc123",
quantity: 10,
metrics: { orders: 2, ratings: 3.5 }
}
)
以下操作希望将:
将"metrics.orders"字段增加 1
将quantity字段增加 -2 (减少quantity)
执行以下语句:
db.products.updateOne(
{ sku: "abc123" },
{ $inc: { quantity: -2, "metrics.orders": 1 } }
)
实际上只将quantity字段增加-2