2015-05-02 6 views
1

Допустим, у меня есть этот объект:Обновление элементов в массиве

{town_id: 13, houses_data: [ 
    {house_id: 5, price: 32, description: "thats a house"}, 
    {house_id: 2, price: 12, description: "thats a house"} 
    ] 
} 

И я хочу, чтобы обновить Desription из дома с идентификатором 5, «продал»:

{town_id: 13, houses_data: [ 
    {house_id: 5, price: 32, description: "sold"}, 
    {house_id: 2, price: 12, description: "thats a house"} 
    ] 
} 

Я пробовал:

town1 = town.findOne({town_id: 13}); 

Получить houses_data:

twon1.houses_data 

И попытался обновить только house_data где id = 5

twon1.houses_data.find({house_id: 5}).update(description: "sold"); 

Но я получаю сообщение об ошибке:

[object Object],[object Object] has no method 'find' 

Что я не так? Благодаря

ответ

2

Вы можете использовать $ обновить первый внедренный документ, соответствующий заданному запросу:

db.test.town.update({town_id: 13, "houses_data.house_id":5}, 
        {$set: { "houses_data.$.description": "sold"}}) 
Смежные вопросы