我不知道为什么 mongoose 没有在每次调用 .save() 方法时自动增加 __v
我尝试启用 Mongoose 的 Debug模式并记录保存行之前和之后的记录。但 __v 没有改变。我还看到 Mongoose 在没有 $inc 运算符的情况下调用 devices.updateOne()
。
示例:
const device = await device({ _id: '5fb3855c241cef097083803d' });
device.name = 'New Name';
device.updatedAt = new Date();
// try to log __v before update
console.log(device.__v); // --> 1
const result = await device.save();
// try to log __v after update
console.log(result.__v); // --> 1
这里是登录终端
1
Mongoose: devices.updateOne({ _id: ObjectId("5fb3855c241cef097083803d") }, { '$set': { name: 'New Name', updatedAt: new Date("Wed, 06 Oct 2021 06:38:34 GMT") }}, { session: null })
1
MongoDb版本:5.0.2 Mongoose 版本:^5.9.20
最佳答案
我发现了这个问题。 Mongoose 的默认版本控制方案仅在您以可能不兼容的方式修改数组时检查文档的版本。所以我只更新名称,一个字符串字段,这样 __v 就不会改变,因为如果你不修改任何数组,它永远不会抛出 VersionError。
设置optimisticConcurrency: true
如果你想增加 __v 甚至改变一个字符串字段
关于mongodb - Mongoose 没有自动增加 __v,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69461024/