удаление объекта в поле arr с помощью мангуста [dубликат]

Doc:

{
   _id: 5150a1199fac0e6910000002,
   name: 'some name,
   items: [{
      id: 23,
      name: 'item name 23'
   },{
      id: 24,
      name: 'item name 24'
   }]
}

Есть ли способ вытащить определенный объект из массива? И.Е. как я могу вытащить весь объект объекта с идентификатором 23 из массива items.

Я попытался:

db.mycollection.update({'_id': ObjectId("5150a1199fac0e6910000002")}, {$pull: {id: 23}});

Однако я уверен, что я не использую 'pull' правильно. Из того, что я понимаю, pull вытащит поле из массива, но не объект.

Любые идеи о том, как вытащить весь объект из массива.

В качестве бонуса я пытаюсь сделать это в mongoose / nodejs, также не уверен, что этот тип вещей находится в API мангуста, но я не смог его найти.

54
задан 26 March 2013 в 21:51

4 ответа

У меня есть документ вроде

Мне нужно удалить адрес из массива адресов

После поиска лотов в Интернете я нашел решение

[F1]
7
ответ дан 15 August 2018 в 15:41
  • 1
    Как это работало? это можно сделать в PHP @Deepak – RussellHarrower 7 July 2017 в 20:20

используйте $ pull для удаления данных

return this.mobiledashboardModel
.update({"_id": args.dashboardId}, { $pull: {"viewData": { "_id": widgetId}}})
.exec()
.then(dashboardDoc => {
     return {
        result: dashboardDoc
     }
});
0
ответ дан 15 August 2018 в 15:41

Вы также можете попробовать:

db.getCollection('docs').update({ },{'$pull':{ 'items':{'id': 3 }}},{multi:true})
0
ответ дан 15 August 2018 в 15:41
[F1]
5
ответ дан 15 August 2018 в 15:41

Другие вопросы по тегам:

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