【发布时间】:2019-08-09 11:55:29
【问题描述】:
我正在尝试使用 find $in 数组增加我的 mongodb 中的一个项目,但是当一个数组中有一个相同的项目时,例如 ['apple','apple'] 它应该增加两次,但就我而言,它只增加一次,看在我的代码中:
var newValue = 1;
var newSerialcode = req.body.serialCode;
var newBloodgroup = req.body.blood_group;
var newGetbloodcomponent = req.body.blood_component;
Bloodinventory.find({ blood_component : { $in : newGetbloodcomponent} ,blood_group: { $in :newBloodgroup},chapter: { $in: [id] }}, function(err, bloodinventoryDocs) {
for(let bloodinventory of bloodinventoryDocs) {
bloodinventory.num_stock = bloodinventory.num_stock + newValue ;
bloodinventory.save(function(err) {
if (err) {
console.log(err);
} else {
console.log('success');
}
});
}
});
【问题讨论】:
-
哪个数组应该有重复值?是
bloodinventoryDocs吗?find()查询的返回值是什么? -
假设 newGetbloodcomponent 具有重复值,例如 ['whole blood','whole blood']
-
我想你可能误解了
$in的用途。让我解释一下您的查询将如何以人类语言工作,您将找到所有血液库存,其中 blood_component 位于 newGetbloodcomponent 中,blood_group 位于 newBloodgroup 中,并且 chapter 位于 id 中。因此,即使您的数组中有重复值,您的查询也会返回相同的结果。 -
您应该展示一些示例文档、您用于查询的参数以及您期望的结果。如前所述,在
$in中简单地提供“两次”值不会导致它“两次”获取匹配的文档。事实上,MongoDB 在处理之前实际上会在查询中“去除重复项”。应该如此。
标签: node.js angularjs mongodb mean-stack