Обновите значение во вложенном массиве с помощью moogoose

#node.js #mongodb #mongoose

Вопрос:

Как я могу обновить значение вложенных массивов с помощью express и мангуста, многомерного массива, и мне нужно обновить значение ключей одного объекта? Вот моя модель данных

     {
    "_id":'A'
    "media" : {
            "pictures" : [ 
                {
                    "_id" : 'B',
                    "file_name" : "Uploads\1625311512442-1_PiHoomzwh9Plr9_GA26JcA.png",
                    "status" : false
                }, 
                {
                    "_id" : 'C',
                    "file_name" : "Uploads\1625311520688-images.jpg",
                    "status" : false
                }, 
                {
                    "_id" : 'D',
                    "file_name" : "Uploads\1625311696037-1_PiHoomzwh9Plr9_GA26JcA.png",
                    "status" : false
                }, 
               
            ]
        }
    }

 {
    "_id:"'B'
    "media" : {
            "pictures" : [ 
                {
                    "_id" : 'M',
                    "file_name" : "Uploads\1625311512442-1_PiHoomzwh9Plr9_GA26JcA.png",
                    "status" : false
                }, 
              
            ]
        }
    }
 

Здесь я хочу изменить статус файла на основе идентификатора и идентификатора изображения.
A-идентификатор
b-идентификатор изображения

Ответ №1:

Вы можете использовать следующий запрос для обновления данных в соответствии с вашими требованиями

 Users.updateOne(
      {
        _id:"A"
      },
      {
        $set:{
          "media.pictures.$[el].status":true
        }
      },
      {
        arrayFilters:[{
          "el._id":"B"
        }]
      }
    )
 

Я также попытался выполнить запрос в MongoDB, вот скриншот результата

Выход