猫鼬如何根据自定义字段进行更新(如果存在)。否则插入

时间:2019-02-15 08:28:14

标签: node.js mongodb express mongoose

我正在构建一个mongoDB数据库,其中包含来自多个不同系统的销售数据。每个系统都通过我为数据库创建的node / mongoose / Express API集成在一起。通常,您将检查ID以确定记录是否已存在,如果不存在则将其插入。但是,由于这些不同来源的ID在技术上可能会重叠,因此我需要一个系统来确保来源只能更新最初来自该来源的记录。因此,我添加了一个名为“ external_ID”的列,其中保存了来自源的记录ID,另外一个名为“集成ID”的列对发送数据的特定系统而言是唯一的。但是,为了使该想法起作用,我只需要在这两列匹配时进行更新,否则就插入一条新记录。 MongoDB是否有可能,还是我要解决这个错误?

非常感谢。

1 个答案:

答案 0 :(得分:4)

upsert上使用update()。如果没有符合查询条件的文档,它将创建一个新文档。

db.collection.update(<query>, <update>, { upsert: true })

您可以在Upsert Behavior文档中找到更多详细信息