Mongodb:更新嵌入文档中的字段

时间:2013-10-01 15:43:25

标签: python mongodb

如果我的文档看起来像这样:

{ 
    "_id" : 1, 
    "name": "Homer J. Simpson", 
    "income" : 45000,
    "address": { 
        "street": "742 Evergreen Terrace", 
        "city": "Springfield", 
        "state": "???", 
        "email": "homer@springfield.com", 
        "zipcode": "12345", 
        "country": "USA"
     }
}

想要对地址文档中的某些字段进行更新(保持其他字段不变),并插入新字段(如果它们尚不存在),例如:

{ 
    "address": {
        "email": "homer@gmail.com", 
        "zipcode": "77788", 
        "latitude" : 23.43545, 
        "longitude" : 123.45553
    }
}

有没有办法一次性进行原子更新,还是需要循环新数据中的键/值并为每一个执行.update()

2 个答案:

答案 0 :(得分:1)

使用带有$set的点表示法来定位单个update中的多个嵌入字段:

{ "$set": {
    "address.email": "homer@gmail.com", 
    "address.zipcode": "77788", 
    "address.latitude" : 23.43545, 
    "address.longitude" : 123.45553
} }

答案 1 :(得分:0)

塞尔吉奥提到使用$套装。

{address.latitude : "77788"}