mongodb update和$ set会覆盖文档

时间:2016-12-29 14:33:08

标签: node.js mongodb edit

假设我有一份文件;

{
  id: 1,
  name: alex, 
  age: 39,
  surname: felix
  address: [
   { 
     type: "home"
     street: "blabla"
   }
  ]
}

当我把查询写成;

db.collection.update({id: 1 , adress.type: "home"} ,  { $set : {adress: { street: "test"}});

将文档更改为;

{
  id: 1,
  adress: [
      street: test
  ]
}

但是我只想设置文档的一部分,只想更改街道名称,但此查询会覆盖文档。

如何使用mongodbupdate中修改文档的部分内容?

2 个答案:

答案 0 :(得分:1)

你可以试试这个

db.collection.update( 
  { id: 1, "address.type" : "home" } , 
  {$set : {"address.$.street" : "test"}}
);

Docs

了解详情

答案 1 :(得分:0)

使用位置$运算符

可以更新数组中某个位置的项目
db.collection.update( 
    {id: 1 , adress.type: "home"}, 
    { $set: { "adress.$.street": "test" } }
)

!注意,这仅在找到ONE(1)子文档时有效