"$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