Doc:

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

Hay una manera de tirar de un objeto específico de una matriz? I. E. ¿cómo me tire todo el elemento objeto con el identificador de 23 a partir de los elementos de la matriz.

He intentado:

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

Sin embargo, estoy bastante seguro de que no estoy usando ‘pull’ correctamente. Por lo que yo entiendo pull tire de un campo a partir de un array, pero no un objeto.

Alguna idea de cómo tirar de la totalidad de su objeto fuera de la matriz.

Como un bono estoy tratando de hacer esto en la mangosta/nodejs, así no estoy seguro si este tipo de cosas es en la mangosta de la API, pero no pude encontrarlo.

5 Comentarios

  1. 113

    try..

    db.mycollection.update(
        {'_id': ObjectId("5150a1199fac0e6910000002")}, 
        { $pull: { "items" : { id: 23 } } },
    false,
    true 
    );
    • sí, mi sintaxis estaba equivocado. Gracias! También lo intentó sin el molesto y con múltiples opciones y que funcionaba tan bien.
    • GRACIAS @sambomartin
    • ¿Cuáles son los valores booleanos?
    • si recuerdo correctamente, estas fueron las opciones de upsert y multi. Para la actual sintaxis & control de la documentación en este enlace: docs.mongodb.com/manual/reference/method/db.collection.update
  2. 7

    Tengo un documento como

    MongoDB, quitar el objeto de la matriz

    Tengo que eliminar la dirección de dirección de la matriz

    Después de buscar mucho en internet encontré la solución

    Customer.findOneAndUpdate(query, {$pull: {address: addressId}}, function(err, data){
            if(err) {
              return res.status(500).json({'error' : 'error in deleting address'});
            }
    
            res.json(data);
    
          });
    • ¿Cómo pasó esto? se puede hacer esto en PHP @Deepak
  3. 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
               }
           ]
        }
  4. 1

    Uso $pull para eliminar los datos

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

Dejar respuesta

Please enter your comment!
Please enter your name here