如果我的文档看起来像这样:
{
"_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()
?
答案 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"}