如何首先检查 mongodb 中的数组,如果它还没有包含这个项目(字符串),然后添加项目?
Posted
技术标签:
【中文标题】如何首先检查 mongodb 中的数组,如果它还没有包含这个项目(字符串),然后添加项目?【英文标题】:How to first check the array in mongodb and then add item if it does not already contain this item(string)? 【发布时间】:2021-12-16 22:00:37 【问题描述】:这是我到目前为止的代码:
Scorecard.findOneAndUpdate(
_id: fielderRoleInfo.player_id ,
$push: ["score." + n + ".catches"]: dismissedPlayer ,
function (err, docs)
if (err)
console.log(err);
else
// console.log("Updated Fielder : ", docs);
);
dismissedPlayer 和 fielderRoleInfo 在代码的其他地方定义。此代码在分数数组中的对象内的 catches 数组中添加重复的字符串(dismissedPlayer)(分数是一个对象数组)。我想首先检查字符串(dismissedPlayer)是否存在于数组中,如果不存在,则只添加数组。注意:dismissedPlayer 是一个变量,它会有动态值
【问题讨论】:
而不是$push
,使用 $addToSet
在更新的过滤器中,如果数组字段中存在dismissedPlayer,您可以包含条件(您可以使用$eq
运算符)。
请参阅 MongoDB 手册中的此示例:Query an Array Element。您可以根据需要使用$eq
或$ne
运算符。
@mohammadNaimi 谢谢
所以如果可能的话我会回答并接受它?
【参考方案1】:
用 $addToSet 代替 $push 对我有用。
$addToSet 运算符向数组添加一个值,除非该值是 已经存在,在这种情况下 $addToSet 对该数组没有任何作用。
【讨论】:
以上是关于如何首先检查 mongodb 中的数组,如果它还没有包含这个项目(字符串),然后添加项目?的主要内容,如果未能解决你的问题,请参考以下文章
MongoDB更新数组元素(带有键的文档)如果存在,否则推送
mongodb:查询以检查数组中的项目是不是包含特定字符串[重复]
如何在 mongodb/mongoose 的嵌套数组中检查是不是存在并更新对象?