【发布时间】:2016-02-05 16:06:39
【问题描述】:
我很难想出一个解决方案来更新具有不同值的多个文档。
我有一个应用程序可以销售每件已售出的商品,我想将我的数据库中的数量减少一个。
var soldItems =
[
{
"_id": "1"
"name": "Foo",
"price": 1.09
},
{
"_id": "2",
"name": "Bar",
"price": 2.00
}
]
var ids = [];
soldItems.forEach(function(item){
ids.push(item._id);
});
我正在收集我的 soldItems 对象数组中的所有 id。
现在我想知道我在数据库中有多少项目数量,然后将数量减少一个。
ModelItem.find({_id: {$in: ids}}, function(err, docs){
if(err) throw err;
docs.forEach(function(doc){
soldItems.forEach(function(item){
if(doc._id === item._id){
doc.quantity += -1;
}
});
});
Item.update({_id: {$in: ids}}, {$set: docs }, function(err){
if(err) throw err;
});
});
显然这是错误的,因为 $set 传入的是数组而不是对象。
我想知道如何将数据库中每个项目的数量减少一个,但同时我不想低于数据库中的 0 个项目。
我确定我是从错误的角度看这个的。
谢谢。
【问题讨论】:
标签: node.js mongodb express mongoose