$ push等效于mongo中的地图

时间:2014-08-02 00:44:05

标签: mongodb mongodb-query

我们可以在$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)地图?

1 个答案:

答案 0 :(得分:4)

使用Dot notation运算符的

$set是您处理单个元素的方式。

采取以下文件:

{
    "_id": 1,
    "map": {
        "field2": 1
    }

}

为了添加" field3"到地图你更新如下:

db.collection.update({ "_id": 1 }, { "$set": { "map.field3": 2 } })

现在您的文档如下所示:

{
    "_id": 1,
    "map": {
        "field2": 1,
        "field3": 2
    }
}