Удалить объект по id из массива в мангусте - PullRequest
1 голос
/ 08 мая 2020

Так что это кажется довольно простым, но я не могу заставить его работать. У меня есть документ в mongodb, и я использую mon goose Все, что мне нужно сделать, это найти пользователя по идентификатору, получить документ и удалить один указанный объект из массива объектов. Вот структура:

report:[
   {
     asset_report_id:234,
     name:'somethign,
    },
    {
     asset_report_id:23,
     name:'somethign,
    },
   {
     asset_report_id:111,
     name:'somethign,
    }
]

Я пробовал это:

User.findOne({_id: request.decodedTokenData.userId})
        .exec()
        .then(user=>{
          const result = user.reports.find( ({ asset_report_id }) => asset_report_id === assetID );
          console.log('IN FIND',result);
        })
        .catch(err=>console.log(err))

Теперь я получаю отличный результат, и я могу удалить, но нет способа сделать это с пн goose напрямую? Больше по строкам простого mon go версии:

db.removeObject.update( {'_id':ObjectId("5c6ea036a0c51185aefbd14f")},
 {$pull:{"reports":{"asset_report_id":234}}},false,true);

1 Ответ

1 голос
/ 08 мая 2020

Итак, правильное решение:

await User.updateOne( {'_id':ObjectId("5c6ea036a0c51185aefbd14f")},
   {$pull:{"report":{"asset_report_id":234}}},false,true)

, поскольку модель данных содержит массив «отчетов»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...