gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 07:40:12 27 4
gpt4 key购买 nike

我有一个带有 timestamps: true 参数的模式。我想插入文档,但前提是它们尚不存在。如果它们确实存在,则不应发生任何操作 (noop)。

所以我使用 $setOnInsert 参数如下

return Order.findByIdAndUpdate(
order._id,
{
$setOnInsert: order
},
{
upsert: true,
new: true
});

如果我理解正确,这应该只在文档不存在时插入文档,否则不执行更新。

但是,每当我运行此操作时,updatedAt 时间戳都会更新。

我该如何防止这种情况发生?这是预期的行为还是我选择了错误的方法来“仅在不存在时插入”?

最佳答案

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

例如:

return Order.findByIdAndUpdate(
order._id,
{
$setOnInsert: order
},
{
timestamps: false,
upsert: true,
new: true
}
);

可以看相关文档here .

关于mongodb - Mongoose 更新 $setOnInsert 更改 updatedAt 时间戳,即使没有更新发生,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46364616/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com