You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MongoDB文档无__v属性时,Mongoose操作是否会自动添加该属性?

Mongoose对无__v属性文档的处理行为

好问题!我之前在项目里也碰到过第三方服务直接操作MongoDB导致文档缺失__v的情况,刚好可以给你明确答案:

  • 当你**首次通过Mongoose对一个没有__v属性的文档执行任何操作(读取、更新、保存等)**时,Mongoose会自动为该文档添加__v: 0的属性,并且后续的版本变更会正常递增这个值。
  • 举个实际场景:假设第三方写入了一条没有__v的用户文档,你用UserModel.findById(userId)读取它,然后修改某个字段并调用save(),Mongoose在保存时就会自动给这条文档加上__v: 0;下次再通过Mongoose更新它,__v就会变成1,以此类推。
  • 注意:如果你的Schema里显式设置了versionKey: false(比如const UserSchema = new mongoose.Schema({...}, { versionKey: false })),那Mongoose就不会处理__v属性了,这种情况下才不会自动添加。但默认情况下,Mongoose的versionKey是开启的,值为__v。

简单来说,只要你没手动禁用版本键,Mongoose会自动补全缺失的__v属性,确保后续的版本跟踪能正常工作,不用额外手动处理第三方写入的文档。

内容的提问来源于stack exchange,提问作者Marc Borni

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:17:41