mongoose一个奇怪的问题?
发布于 12 年前 作者 zstar 7610 次浏览 最后一次编辑是 8 年前

如题,我在用mongoose的时候,用了两个schema,如下: var Comments = new Schema({ projectName : String , comment : String , created_at : Date });

//定义user对象模型 var UserScheme = new Schema({ userId:ObjectId, username:String, password:String, userAccountId:ObjectId, userAccountSummary:{type:String,default:“1000”}, myProjectsList:[], myCommentsList:[Comments], myFundedProjectsList:[]

}); 但是后来我在我的网站上注册登录后,数据库插进来一个奇怪的字段:__v:0 我插入一条数据后:显示如下结果: enter image description here

我并没有插入__v从始至终,不知道大家遇到没

17 回复

默认会多插入一个_id 没发现会插入一个_v 你再检查一下,肯定是插了

检查过了,遵循上面的schema没有问题啊

检查过了,遵循上面的schema没有问题啊

sdaasdfasdf asdfasdf

哎,多看api啊,_id是默认配置上去的,即便你不写,也会有,如果你重新指定id,那么原有的_id也就没有了,会显示新的主键id。至于这个__v,你回想你写过哪些程序会有v这个符号,例如“nodejs -v”或者“npm -v”或者“java -version”,对了,v代表的就是版本,__v也是默认配置上去的,用来表示版本信息的,当然这个你也可以去掉,具体的查看api去。多看api,下次要是看见多了几个文档例如“system.indexes”或者“system.users”等千万不要惊讶。

哥们用心良苦啊 一早上就看到多个你回复的帖子 真是热心啊

@shinka 早安。呵呵,能回答就回答,不能回答就等答复学习

@a272121742 真该向你学习 可惜学艺不精很多都只有打酱油的份…

你能看见多插入了一个_v,为什么就没发现还多插入了一个_id呢?呵呵,这都是默认就会插入的

默认会插入id,谁应该都知道,但是插入这个_v是第一次碰到,弄了这么多天还是第一次碰到,

十分感谢,id我知道,我只是说_v,不是每一种插入都会有_v的,它不是默认的

@zstar 直接把源发给你看吧

The versionKey is a property set on each document when first created by Mongoose. This keys value contains the internal revision of the document. The name of this document property is configurable. The default is __v. If this conflicts with your application you can configure as such:

var schema = new Schema({ name: 'string' });
var Thing = mongoose.model('Thing', schema);
var thing = new Thing({ name: 'mongoose v3' });
thing.save(); // { __v: 0, name: 'mongoose v3' }

// customized versionKey
new Schema({..}, { versionKey: '_somethingElse' })
var Thing = mongoose.model('Thing', schema);
var thing = new Thing({ name: 'mongoose v3' });
thing.save(); // { _somethingElse: 0, name: 'mongoose v3' }
Document versioning can also be disabled by setting the versionKey to false. DO NOT disable versioning unless you know what you are doing.

new Schema({..}, { versionKey: false });
var Thing = mongoose.model('Thing', schema);
var thing = new Thing({ name: 'no versioning please' });
thing.save(); // { name: 'no versioning please' }

请仔细阅读

mongoose大家在windows能运行吗

@a272121742 3Q,当时在文档中没看到

@zstar 所以说看文档要仔细,很多问题都是文档上写过的

回到顶部