我有一个像这样的猫鼬模式:
Tuple
现在,如果我想在一个查询上更新多列,即“符号”值,那么MongoDB updateMany Query就可以了。这是查询:
{
"_id" : ObjectId("5a7acda13b808dbed05d6505"),
"symbol" : "@AKS",
"counter" : 4
},
{
"_id" : ObjectId("5a7acda13b808dbed05d6506"),
"symbol" : "@AKD",
"counter" : 5
}
通过此查询如果我给出数组值,即
MyCollectionName.updateMany({ 'symbol' : { $in : req.body.array}}, { $inc : { 'counter': 1 } }, function(err, data) {
if(err) {
console.log('error')
} else {
console.log('value incremented')
}
});
然后它将增加两者的计数器。我的问题是如果我将在数组上提供相同的值,那么我想要两个增量而不是一个。像这样:
var array = ["@AKS", "@AKD"];
但目前它只做一个。这可能吗???? 任何帮助都非常感谢。
答案 0 :(得分:1)
您可以使用 bulkWrite
API进行此更新,因为它允许您撰写一系列 bulkWrite()
写入操作,您可以在其中对数组中的每个元素使用updateOne
操作。以下示例显示了如何在您的案例中应用它:
SELECT COUNT(*) FROM table WHERE eye_color='brown';
答案 1 :(得分:0)
如果您只使用updateMany
而不是使用forEach
,那该怎么办:
const yourArray = req.body.array;
yourArray.forEach(function(item) {
MyCollectionName.update({ 'symbol': { $in: item }}, { $inc: { 'counter': 1 }, function (err, data) {
// additional code
});
});