MongoDB,从数组中删除对象

文档:

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

有没有办法从数组中拉出特定的对象? IE浏览器如何从items数组中拉出ID为23的整个项目对象。

我努力了:

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

不过,我很确定,我没有正确使用“拉”。 从我所了解的拉将从一个arrays,而不是一个对象拉场。

任何想法如何将整个对象拉出arrays。

作为一个奖金,我试图在mongoose/ nodejs这样做,以及不知道这种types的东西在mongooseAPI,但我找不到它。

尝试..

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

我有一个像这样的文件

在这里输入图像描述

我必须从地址数组中删除地址

在互联网上search很多,我发现了解决scheme

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

使用$ pull来删除数据

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