@Jelay

MongoDB как update-ить вложенные объекты?

имеется структура БД:

todolists[
      {
       name: "Books",
       id: ObjectID(заданный Mongo),
       needs:[
              {
               task: "Harry Potter1",
               isCompleted: false
              },
              {
              task: "Harry Potter2",
               isCompleted: true
              }
              ]
       },
       {
       name: "Places",
       id: ObjectID(заданный Mongo),
       needs:[
              {
               task: "Boodapesht",
               isCompleted: false
              },
              {
              task: "Varshava",
               isCompleted: true
              }
              ]
       }

И необходимо изменить у task-a с именем "Varshava", в todolist-e с именем "Places" значение поля isCompleted на false.

Как до него так глубоко достучаться? Следующим кодом добавлял необходимые task объекты в todolists. (Может, как-нибудь поможет)

db.get().collection('todolists').findOneAndUpdate({_id: ObjectID(activeID)}, 
{ $push: {                                                                                     
    needs: {                                                                                  
      task: todo.task,                                                                                    
      isCompleted: todo.isCompleted                                                                                   
}                                                                               
}                                                                           
}, {new: true}
...

Помогите, пожалуйста.
  • Вопрос задан
  • 1793 просмотра
Решения вопроса 1
longclaps
@longclaps
db.todolists.findOneAndUpdate(
    {"needs.task": "Varshava"},
    {$set: {"needs.$.isCompleted": false}}
);
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Fragster
@Fragster
помогло? отметь решением!
Вы что, реляционную БД из него хотите сделать? Меняйте объект целиком.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы