【问题标题】:Mongoose findOneAndUpdate creating new recordMongoose findOneAndUpdate 创建新记录
【发布时间】:2021-04-30 20:19:10
【问题描述】:

我正在尝试创建一个函数来使用猫鼬更新我的日记记录。

findOneAndUpdate 需要一个过滤器和文档参数。像这样:

 const query = { name: req.body.name };
 const diary = { name: req.body.name, initDate: req.body.initDate,};

但是当我运行 findOneAndUpdate 时,猫鼬正在创建一个新文档而不是更改现有文档。

const diaryUpdated = await DiaryModel.findOneAndUpdate(query, diary, {
      upsert: true,
});

我做错了什么?

谢谢。

【问题讨论】:

    标签: javascript mongodb mongoose


    【解决方案1】:

    具有给定“名称”(req.body.name)的记录可能不存在。由于启用了 upsert,如果 Mongo 无法找到具有查询名称的现有记录,它将创建一个新文档。

    如果是这种情况,请删除 upsert 或将其设为 false。这可能行得通。

    您可以在此处找到更多信息:https://mongoosejs.com/docs/tutorials/findoneandupdate.html#upsert,即:

    如果一个 upsert 找到一个 匹配过滤器的文档。但是,如果没有文档匹配过滤器, MongoDB 会通过 filter 和 update 组合插入一个,如下所示。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-30
      • 2018-08-18
      • 2019-10-05
      • 1970-01-01
      • 2016-09-13
      • 2017-05-06
      • 2017-08-13
      • 2021-01-02
      相关资源
      最近更新 更多