【问题标题】:if collection does not exist create otherwise update in mongodb node js如果集合不存在,则在 mongodb 节点 js 中创建否则更新
【发布时间】:2021-06-13 18:49:57
【问题描述】:

我是 mongodb 的新手。如果不存在如何创建集合,否则更新。

try {
const { data } = Visit.findByIdAndUpdate(
  '',
  { $inc: { counter: 1 } },
  { new: true }
);
} catch (err) {
  return err;
}

这是我更新唯一一个对象 ID 的代码。在该集合中,仅存在一个对象 ID。第一次运行时,集合是空的。所以我想检查集合是否存在。如果存在则更新,否则创建一个集合。

【问题讨论】:

    标签: node.js mongodb


    【解决方案1】:

    你想使用upsert,像这样:

    const { data } = await Visit.findByIdAndUpdate(
      '',
      { $inc: { counter: 1 } },
      { new: true, upsert: true }
    );
    

    Upsert 将:

    • 如果文档符合查询条件,则 db.collection.update() 执行更新。
    • 如果没有文档符合查询条件,则 db.collection.update() 插入单个文档。

    如果不存在集合,insert behavior 是:

    如果该集合不存在,则 insert() 方法将创建该集合。

    【讨论】:

    • 我想在更新集合之前检查集合是否存在。
    • @Sowmiya 你找到解决方案了吗?对我来说,即使集合不存在,findOneAndupdate 也会成功。如果集合不存在,我想创建它。
    • 不知道为什么这个答案被否决了,也许还不够清楚,这是正确的解决方案。因此,我添加了一些关于 upsert 行为的细节。 @iAviator 我建议在假设它不起作用之前尝试一下。
    • @TomSlabbaert 您刚刚提供了 upsert 代码。目前尚不清楚您是否试图准确回答所询问的内容。现在编辑后看起来很好。
    猜你喜欢
    • 2017-08-30
    • 1970-01-01
    • 2010-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-29
    • 2014-07-23
    • 1970-01-01
    相关资源
    最近更新 更多