MongoDB, удалить объект из массива



Doc:



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


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



Я пробовал:



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


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



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



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

797   5  

5 ответов:

попробовать..

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

У меня есть документ типа

enter image description here

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

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

Customer.findOneAndUpdate(query, {$pull: {address: addressId}}, function(err, data){
        if(err) {
          return res.status(500).json({'error' : 'error in deleting address'});
        }

        res.json(data);

      });
my database:->
        {
       "_id" : ObjectId("5806056dce046557874d3ab18"),
       "data" : [ 
           {
               "id" : 1
           }, 
           {
               "id" : 2
           }, 
           {
               "id" : 3
           }
       ]
    }

MY QUERY:->
db.getCollection('play_table').update({},{$pull:{"data":{"id":3}}},{multi:true}
OutPut:->
{
  "_id" : ObjectId("5806056dce046557874d3ab18"),
       "data" : [ 
           {
               "id" : 1
           }, 
           {
               "id" : 2
           }
       ]
    }

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

return this.mobiledashboardModel
.update({"_id": args.dashboardId}, { $pull: {"viewData": { "_id": widgetId}}})
.exec()
.then(dashboardDoc => {
     return {
        result: dashboardDoc
     }
});

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

db.getCollection('docs').update({ },{'$pull':{ 'items':{'id': 3 }}},{multi:true})

Comments

    Ничего не найдено.