Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb Mongoose update$setOnInsert更改updatedAt时间戳,即使没有更新发生_Mongodb_Mongoose - Fatal编程技术网

Mongodb Mongoose update$setOnInsert更改updatedAt时间戳,即使没有更新发生

Mongodb Mongoose update$setOnInsert更改updatedAt时间戳,即使没有更新发生,mongodb,mongoose,Mongodb,Mongoose,我有一个带有时间戳:true参数的模式。我想插入文档,但前提是这些文档不存在。如果它们确实存在,则不应执行任何操作(noop) 所以我使用$setOnInsert参数如下 return Order.findByIdAndUpdate( order._id, { $setOnInsert: order }, { upsert: true, new: true

我有一个带有
时间戳:true
参数的模式。我想插入文档,但前提是这些文档不存在。如果它们确实存在,则不应执行任何操作(noop)

所以我使用$setOnInsert参数如下

return Order.findByIdAndUpdate(
        order._id,
        {
          $setOnInsert: order
        },
        {
          upsert: true,
          new: true
        });
如果我理解正确,这应该只在文档不存在时插入文档,否则不执行更新

但是,每当我运行这个操作时,updatedAt时间戳都会被更新


我怎样才能防止这种情况?这是故意的行为还是我选择了错误的方法“仅在不存在时插入”

findOneAndUpdate
接受一个
时间戳
选项(设置为
false
)允许您跳过更新时间戳

例如:

return Order.findByIdAndUpdate(
  order._id,
  {
    $setOnInsert: order
  },
  {
    timestamps: false,
    upsert: true,
    new: true
  }
);
您可以查看相关文档