2013-03-26 16 views
52

Doc:MongoDB, usunąć obiekt z tablicy

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

Czy istnieje sposób, aby wyciągnąć konkretny obiekt z tablicy? TO ZNACZY. jak wyciągnąć cały obiekt item o identyfikatorze 23 z tablicy items.

Próbowałem:

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

Jednak jestem pewien, że nie używam „pull” poprawnie. Z tego co rozumiem, ciągnąć będzie pole z tablicy, ale nie obiekt.

Wszelkie pomysły na wyciągnięcie całego obiektu z tablicy.

Jako bonus próbuję to zrobić w mangurze/nodejs, a także nie jestem pewien, czy tego typu rzeczy jest w API mongoose, ale nie mogłem go znaleźć.

+1

Próbował pan jest? http://stackoverflow.com/questions/9048424/removing-specific-items-from-array-with-mongodb –

+0

tak to jest. Dzięki! – lostintranslation

Odpowiedz

83

spróbować ..

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

Tak, moja składnia była błędna. Dzięki! Próbowano również bez zdenerwowania i wielu opcji, które również działały. – lostintranslation

+0

DZIĘKUJEMY @sambomartin –

+5

Co to są wartości logiczne? –

7

Mam dokument jak

enter image description here

muszę usunąć adres z tablicy adresowej

Po wyszukaniu dużo w internecie znalazłem rozwiązanie

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

     res.json(data); 

     }); 
+0

Jak to działa? można to zrobić w PHP @ Deepak – RussellHarrower

4
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 
      } 
     ] 
    } 
0

użycie $ pociągnij, aby wyciągnąć dane

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