【发布时间】:2022-04-10 00:25:56
【问题描述】:
我正在尝试更新特定文档中数组中的多个元素,其中我有需要更新的元素的索引,但前提是某些键不存在。
假设我有一个文件:
{
"key": 1,
"questions": [
{
"text": "first",
},
{
"text": "second",
},
{
"text": "third",
"answered": "balloon",
},
],
},
我想用一个新的“已回答”字段更新第 2 项和第 3 项(索引 2 和 3),但只更新那些还没有“已回答”字段的项。 这是我目前管理的查询:
db.collection.update({
"key": 1,
},
{
$set: {
"questions.1.answered": "second answer",
"questions.2.answered": "third answer",
}
}
)
这将更新第二个和第三个索引,并将它们都设置为“已回答”。但我想跳过“第 3 个”,因为它已经有了“已回答”的键。 我怎样才能实现这种排除? 也许在 ArrayFilters 行中有什么?
预期输出:
{
"key": 1,
"questions": [
{
"text": "first",
},
{
"text": "second",
"answered": "second answer", //Added field
},
{
"text": "third",
"answered": "balloon", //Should not update as it already had "answered"
},
],
},
【问题讨论】:
标签: mongodb mongoose mongodb-query