[英]Delete Array item from mongoDB collection
我正在尝试进行以下操作,如果有人可以提供帮助,那将是非常有帮助的
我想从 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
}
);
但是当遇到 put 或 delete 请求时,这不会从特定文档的 items 数组中删除该项目。 如果有人能帮我弄清楚需要更改代码以使其通过 HTTP 请求发生,那就太好了。
谢谢
db.collection.findOneAndUpdate({_id:'56e8c56a71cfa3fbe528c91b'}, {$pull:{"items.item":"cd"}},{new:true},function(err,object{ });
你可以使用 $拉入 mongodb 查询。我在 ndoe js 中的 mongoose 中使用了这个查询,它可能对我有用..
工作解决方案现在是这样
exports.updateArray = function(req, res) {
Order.update(
// query
{
_id:req.params.id
},
// update
{
$pull:{
items:{
item:itemdata
}
}
},function(err){
return res.send(204);
}
);
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.