如何在MongoDB中合并更新中的字段

时间:2019-07-18 14:07:29

标签: mongodb upsert

给出MongoDB中的文档结构

{
    _id: "5d305779fc12b358849fae2c",
    externalID: 551,
    title: title,
    owners: ["John"]
}

我想根据externalID使用upsert执行更新。因此,如果externaID与新文档中的相同,则应仅更新所有者字段并添加新所有者,如果找不到,则创建新文档。

结果应如下所示:

{
    _id: "5d305779fc12b358849fae2c",
    externalID: 551,
    title: title,
    owners: ["John", "new name"]
}

我正在尝试在一个查询中执行此操作,因为数据来自API,用户/所有者拥有多个记录。 是否可以或应该搜索每个externalID,如果可以,请更新 相应地?

谢谢。

1 个答案:

答案 0 :(得分:0)

在@Rakshith Sm的评论的帮助下将其排序出来

db.collection("my_collection").updateOne(
    { _externalID: y_id},
        {
          $set: {
            title: my_title,
          },
          $addToSet: { owner: new_owner}
        },
        { upsert: true }
    );

$ addToSet注意可能的重复项