2013-03-26 12 views
52

Doc:MongoDB, rimuovere l'oggetto dalla gamma

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

C'è un modo per tirare un oggetto specifico da un array? OSSIA come faccio a tirare l'intero oggetto item con id 23 dall'array items.

ho provato:

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

Tuttavia io sono abbastanza sicuro che non sto usando 'pull' correttamente. Da quanto ho capito, pull tirerà un campo da un array ma non da un oggetto.

Qualsiasi idea su come estrarre l'intero oggetto dall'array.

Come bonus sto cercando di farlo in mongoose/nodejs, e non sono sicuro che questo tipo di cose sia presente nell'API di manguste ma non riesco a trovarlo.

+1

Hai provato questo? http://stackoverflow.com/questions/9048424/removing-specific-items-from-array-with-mongodb –

+0

sì, è così. Grazie! – lostintranslation

risposta

83

provare ..

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

sì, la mia sintassi era sbagliata. Grazie! Anche provato senza le opzioni upset e multi e che ha funzionato pure. – lostintranslation

+0

GRAZIE @sambomartin –

+5

Quali sono questi valori booleani? –

7

Ho un documento come

enter image description here

devo eliminare indirizzo dall'indirizzo gamma

Dopo aver cercato un sacco su internet ho trovato la soluzione

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

Come funziona? questo può essere fatto in 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

uso $ tirare per rimuovere i dati

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