it-swarm.com.de

MongoDB, Objekt aus dem Array entfernen

Doc:

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

Gibt es eine Möglichkeit, ein bestimmtes Objekt aus einem Array zu ziehen? I.E. Wie ziehe ich das gesamte Artikelobjekt mit der ID 23 aus dem Artikelarray.

Ich habe versucht:

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

Ich bin mir jedoch ziemlich sicher, dass ich 'pull' nicht richtig verwende. Nach allem, was ich verstehe, wird Pull ein Feld aus einem Array ziehen, aber kein Objekt.

Alle Ideen, wie Sie das gesamte Objekt aus dem Array ziehen.

Als Bonus versuche ich dies in mongoose/nodejs zu tun, auch nicht sicher, ob diese Art von Dingen in der mongoose-API enthalten ist, aber ich konnte es nicht finden.

61

versuchen..

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

Ich habe ein Dokument wie

 enter image description here

Ich muss die Adresse aus dem Adressfeld löschen

Nachdem ich viel im Internet gesucht hatte, fand ich die Lösung

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

        res.json(data);

      });
7
Deepak Sisodiya
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
           }
       ]
    }
4
Viral Patel

Verwenden Sie $pull, um die Daten zu entfernen

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

Sie können es auch probieren:

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