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

标签 mongodb push updating

我有很多功能用 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})

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

最佳答案

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

关于mongodb - 推送 mongoDB 中的元素,如果它不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39223971/

相关文章:

mongodb条件查询主键_id?

arrays - MongoDB 和数组上的覆盖索引可能吗?

php - Mysql 特殊字符未正确更新

git - SourceTree - 删除等待推送

android - 如何从服务器推送到 Google TV?

Android studio 更新 SDK 卡住

image - 上传的 FTP 文件不反射(reflect)在网站上

node.js - Mongoose Schema.update 不更新 bool 值

javascript - 如何使用 mongoose 检查 MongoDB 中是否已存在记录/文档?

java - 将警报推送到 Java 中的通知托盘应用程序