mongodb - 在一个查询中将对象列表更新或插入到 mongodb 数组中
问题描述
我正在尝试为单个文档更新数组元素。
我想为 mongo 查询提供对象列表,如果每个对象在 mongo 文档数组中存在(基于某个字段),则替换数组中的对象,如果不存在,则将其添加到数组中。
我知道这可以使用应用程序端来完成,但这可以使用 1 个事务查询来完成吗?
例子:
{
"_id" : ObjectId("50b429ba0e27b508d854483e"),
"array" : [
{
"id" : "1",
"letter" : "a"
},
{
"id" : "2",
"letter" : "b"
},
{
"id" : "3",
"letter" : "c"
}
],
"tester" : "tom"
}
现在,我想将以下对象传递给我的查询:
{
"id" : "3",
"letter" : "c-new"
"newField": "some string"
},
{
"id" : "4",
"letter" : "D"
}
基于id字段,我希望 mongo 看到:
id:3 已经存在,因此它将用提供的新对象替换当前元素
id:4 不存在,因此会将其添加到数组元素中。
(这基本上称为upsert)。
解决方案
推荐阅读
- regex - 正则表达式——排除和包含一些词
- javascript - 有没有办法在将项目添加到 HTML 文件中的 DOM 之前拦截它们
- c++ - 在运行时以最少的开销禁用 c++ 代码的最佳方法是什么
- java - 是否可以使用 intstall4j 签署 JavaApplicationStub?
- swift - Xcode 12 打印命令不显示类字段
- flutter - 发布版本的应用程序不能进行 API 调用?
- scala - 我们可以使用 SparkSQL(DataFrame)创建两个 Parquet 文件吗?
- quarkus - quarkus-amazon-lambda 产品准备好了吗?
- python-3.x - 如何检查字符域选择实例
- python-3.x - 如何在 django 中显示用户数据?