MongoDB, elimina el objeto de la matriz

Doc:

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

¿Hay alguna forma de extraer un objeto específico de una matriz? IE, ¿cómo puedo extraer todo el objeto del artículo con el ID 23 de la matriz de elementos?

Yo he tratado:

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

Sin embargo, estoy bastante seguro de que no estoy usando ‘tirar’ correctamente. Por lo que entiendo, tirar extraerá un campo de una matriz, pero no un objeto.

Alguna idea de cómo sacar todo el objeto de la matriz.

Como beneficio adicional estoy tratando de hacer esto en mongoose / nodejs, así como no estoy seguro si este tipo de cosas está en la API de mongoose, pero no pude encontrarlo.

tratar..

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

Tengo un documento como

enter image description here

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

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); }); 
 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 } ] } 

Use $pull para eliminar los datos

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

Puedes intentarlo también:

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