从mongoDB集合中删除数组项目

我正在努力做下面的事情,如果有人能帮上忙,那将是很大的帮助

我想从items数组中删除一个项目

{ "_id" : ObjectId("56e8c56a71cfa3fbe528c91b"), "shipping" : 6.7800000000000002, "subTotal" : 201, "totalCost" : 207.7800000000000011, "order_status" : "queued", "ordered_by" : "John Sims", "ordered_by_id" : "56e8c50a71cfa3fbe5288a48", "created_at" : ISODate("2016-03-16T02:31:06.723Z"), "items" : [ { "created_at" : "2008-12-17T11:01:23.460Z", "quantity" : 1, "country" : "Australia", "state" : "NSW", "suburb" : "Sydney", "location" : "Sydney,NSW,Australia", "longitude" : "151.1228434", "latitude" : "-33.7904955", "genre" : "Rock", "cost" : "67", "product_status" : "pending", "product_by" : "Paul Dirac", "item" : "CD", "cart_id" : "56e8c56271cfa3fbe528c918" }, { "created_at" : "2008-12-17T11:01:23.460Z", "quantity" : 1, "country" : "Australia", "state" : "QLD", "suburb" : "Brisbane", "location" : "Brisbane,NSW,Australia", "longitude" : "151.1228434", "latitude" : "-33.7904955", "genre" : "", "cost" : "67", "product_status" : "pending", "product_by" : "Paul Dirac", "item" : "DVD", "cart_id" : "56e8c56571cfa3fbe528c919" } ] } 

基于下面的条件

 // Updates an existing order in the DB. exports.updateArray = function(req, res) { Order.findById(req.params.id, function (err, order) { if (err) { return handleError(res, err); } if(!order) { return res.send(404); } order.update( // query { }, // update { $pull:{ items:{ "item" : "CD" } } } ); order.save(function (err) { if (err) { return handleError(res, err); } return res.json(200, order); }); }); }; 

现在,更新代码运行,并从shell中执行代码时从项目中删除项目与以下

 db.getCollection('orders').update( // query { }, // update {$pull:{ items:{ item:'CD' } } }, // options { "multi" : false, // update only one document "upsert" : false // insert a new document, if no existing document match the query } ); 

但是,当运行放置或删除请求时,这不会从特定文档的items数组中删除项目。 如果有人可以帮我弄清楚代码需要改变,通过HTTP请求发生的事情会很好。

谢谢

db.collection.findOneAndUpdate({_id:'56e8c56a71cfa3fbe528c91b'}, {$pull:{"items.item":"cd"}},{new:true},function(err,object{ });您可以使用$拉mongodb查询。这个查询我用在mongoose在ndoe js和它可能是我的工作..

工作解决scheme现在是这个

 exports.updateArray = function(req, res) { Order.update( // query { _id:req.params.id }, // update { $pull:{ items:{ item:itemdata } } },function(err){ return res.send(204); } ); };