@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}
...

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

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

Похожие вопросы
23 нояб. 2024, в 01:31
1000 руб./за проект
23 нояб. 2024, в 00:16
2000 руб./за проект
22 нояб. 2024, в 23:55
3000 руб./за проект