Задать вопрос
@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}
...

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

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

Похожие вопросы