MongoDB如何先检查数组是否存在指定值,不存在才添加字符串元素
MongoDB数组不存在指定元素才添加的解决方案
你当前使用的$push操作符会无条件向数组插入元素,因此会出现重复值。你可以直接替换为MongoDB原生的$addToSet操作符,它会自动校验目标数组中是否已存在待插入元素,仅不存在时才执行添加,属于原子操作,无需额外写前置查询判断逻辑,也不会有并发冲突问题。
修改后的代码如下:
Scorecard.findOneAndUpdate( { _id: fielderRoleInfo.player_id }, { $addToSet: { ["score." + n + ".catches"]: dismissedPlayer } }, function (err, docs) { if (err) { console.log(err); } else { // console.log("Updated Fielder : ", docs); } } );
如果需要确认是否真的执行了插入操作,可以在查询参数中添加{ new: true }配置项,拿到更新后的最新文档对比数组变化即可。
内容的提问来源于stack exchange,提问作者Muhammad Danyal
相关产品推荐
相关产品推荐

