我们可以在$push
atomically
更新包含数组的单个文档时使用update
(将数组添加到数组中)
但是,我找不到原子地add a new key
到文档中的地图的方法。
我可以
* read the document,
* read the map in it,
* update the map in my code and
* update the document in my code.
但这不是原子的。
我只处理single document
,但该文档有地图。
有没有办法可以原子地更新(add a new key)
地图?
答案 0 :(得分:4)
$set
是您处理单个元素的方式。
采取以下文件:
{
"_id": 1,
"map": {
"field2": 1
}
}
为了添加" field3"到地图你更新如下:
db.collection.update({ "_id": 1 }, { "$set": { "map.field3": 2 } })
现在您的文档如下所示:
{
"_id": 1,
"map": {
"field2": 1,
"field3": 2
}
}