2016-12-29 50 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)個子文檔時才起作用