2015-07-03 5 views
0

У меня есть модель мангуста, как показано ниже:Mongoose Обновление массива внутри массива

{ 
    _id: ObjectId("557138249d46084df20620dd"), 
    name: "Example" 
    employee: [ 
     { 
      username: "[email protected]", 
      address: [ 
       { 
        street: "123 Hill Ave" 
        country: US 
       } 
      ] 
     } 
    ] 
} 

Там может быть много employee и каждый сотрудник имеет array из адрес. Я хотел бы обновить весь адрес сотрудника внутри массива как пустой массив. Таким образом, результат будет выглядеть следующим образом:

{ 
    _id: ObjectId("557138249d46084df20620dd"), 
    name: "Example" 
    employee: [ 
     { 
      username: "[email protected]", 
      address: [] 
     } 
    ] 
} 

Как я могу запросить обновление адреса всех документов в виде пустого массива? Благодарю.

+0

Вы также хотели бы изменить имя ключа, как в ожидаемом выпуске, вы заменили 'employee' на' компании'? – Yogesh

ответ

0

Хорошо, у меня есть решение, и оно работает. Благодарю.

db.example.find().forEach(function(doc){ 
    doc.employee.forEach(function(em){ 
     em.address=[]; 
    }) 
    db.example.save(doc); 
}); 
0

Невозможно сделать это в одном методе мангуста. Это можно сделать с помощью простого цикла и сэкономить:

Model.findOne({query}, function(err, model) { 
    if (err) {return callback(err);} 

    for (var emp in model.employees) { 
     model.employees[emp].address = []; 
    } 

    model.save(callback); 
}); 
Смежные вопросы