MongoDB中如何批量递增数组指定symbol对应的counter字段?
批量更新多个Mongoose文档的指定字段
假设你的集合里有类似这样的文档:
{ "_id" : ObjectId("5a7acda13b808dbed05d6505"), "symbol" : "@AKS", "counter" : 4 }, { "_id" : ObjectId("5a7acda13b808dbed05d6506"), "symbol" : "@AKD", "counter" : 5 }
如果需要一次性给多个指定symbol值对应的文档的counter字段加1,用Mongoose的updateMany()方法就能轻松实现,具体代码如下:
MyCollectionName.updateMany( // 查询条件:匹配symbol在传入数组中的所有文档 { 'symbol': { $in: req.body.array } }, // 更新操作:将匹配文档的counter字段自增1 { $inc: { 'counter': 1 } }, // 回调函数处理结果 function(err, data) { if (err) { console.log('更新出错啦:', err); } else { console.log('更新完成!一共修改了', data.modifiedCount, '个文档'); } } );
关键细节说明:
$in:用来匹配symbol值存在于req.body.array这个数组中的所有文档,非常适合批量匹配多个目标值$inc:MongoDB的增量更新操作符,这里我们让counter加1,你也可以根据需求改成其他增量数值(比如减1就写-1)- 回调里的
data.modifiedCount:会返回实际被修改的文档数量,方便你确认更新效果
内容的提问来源于stack exchange,提问作者Ankit
相关产品推荐
相关产品推荐

