web-dev-qa-db-fra.com

MongoDB, supprimer un objet du tableau

Doc:

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

Existe-t-il un moyen d'extraire un objet spécifique d'un tableau? C'EST À DIRE. comment puis-je extraire l'objet item complet avec l'ID 23 du tableau items.

J'ai essayé:

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

Cependant, je suis à peu près sûr de ne pas utiliser correctement le "pull". D'après ce que je comprends, pull va tirer un champ d'un tableau mais pas d'un objet.

Toutes les idées pour extraire l’objet entier du tableau.

En prime, j'essaie de faire cela en mangouste/nodejs, ainsi je ne suis pas sûr que ce type de chose soit dans l'API de mangouste, mais je ne pouvais pas le trouver.

61
lostintranslation

essayer..

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

J'ai un document comme

 enter image description here

Je dois supprimer l'adresse du tableau d'adresses

Après avoir cherché beaucoup sur internet, j'ai trouvé la solution

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

Utilisez $pull pour supprimer les données

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

Vous pouvez l'essayer aussi:

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