在 mongoDB 中推送元素,如果它不存在

cho*_*hou 3 updating push mongodb

我用 mongo 更新了很多功能

这是一个例子:

 db.auto.update({'def.name':'AFFAIRES'},{$push:{
"covers":{$each: [{"a":'G06'},{"a":'G07'},{"a":'G03'},{"a":'G04'},{"a":'G07'},{"a":'G30'},{"a":'G34'},
{"cover":'G14'}]}}},{multi:true})
Run Code Online (Sandbox Code Playgroud)

但是,问题是,我的集合可能包含这些变量“a”之一,所以我不需要推送它,如果没有,我必须将它推送到集合中。所以我的问题是如何告诉 mongoDB 在推送之前进行验证,这可能吗?我的查询也可能包含其他要推送的变量。

Cle*_*ath 6

使用$addToSet - $addToSet 运算符向数组添加一个值,除非该值已经存在。如果该值已经存在,则 $addToSet 对该数组不执行任何操作。$addToSet 只确保没有重复项添加到集合中,不会影响现有的重复元素。$addToSet 不保证修改集中元素的特定顺序。