2016-12-29 49 views
0

假设我有一个文件为;

{ 
    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 
    ] 
} 

不过,我只是想设置文档的一部分,只是想更改街道名称,但此查询重写文件。

如何使用update编辑mongodb中文档的部分部分?

回答

1

您可以从Docs

+0

是的,这是答案呃。但为什么?而不是{地址:{street:“test”}}“”address。$。street“”改变整个逻辑。 – mmu36478

+0

由于它是一个数组,我们必须根据查询更新适当的索引值。 –

0

在数组中的位置更新项目的详细试试这个

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

阅读可以使用了该位置$操作

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

!注意做到的,这仅当发现一(1)个子文档时才起作用