mongodb Mongo:更新所有字段,但合并一些字段

iyfjxgzm  于 2023-01-20  发布在  Go
关注(0)|答案(1)|浏览(173)

我收藏了很多文件:

{
  "key": "abc",
  "field1": "oldValue",
  "fieldN": ["a","b"]
}

现在我有这样的文件:

{
  "key": "abc",
  "field1": "newValue",
  "fieldN": ["b","c"]
}

是否可以(在单个操作中)使用新值(覆盖)更新文档(如果key匹配),但对单个fieldN字段执行合并操作:["a", "b"] + ["b", "c"]变为["a", "b", "c"](唯一值,顺序无关紧要)
如果文档key不存在,执行一个简单的插入(我想我可以用upsert标记来完成)

aelbi1ox

aelbi1ox1#

您可以使用$addToSet

db.collection.updateOne(
    { key: "abc" },
    { $set: { field1: "newValue" }, $addToSet: { fieldN: { $each: ["b", "c"] } } },
    { upsert: true }
);

相关问题