为了账号安全,请及时绑定邮箱和手机立即绑定

mongoose中自建的_id是怎么生成的?

mongoose中自建的_id是怎么生成的?

炎炎设计 2019-04-09 20:24:59
从官方mongoosev3.8.7的手册中看到关于Schema的_id属性,发现这个属性在new一个模型的时候就已经生成了,这个时候根本就没有和MongoDB通信!我好奇mongoose是如何生成这个_id的值的,它能保证唯一性么?另外,官方提到可以关闭这个特性,但是varschema=newSchema({name:String},{_id:false});varPage=mongoose.model('Page',schema);varp=newPage({name:'mongodb.org'});console.log(p);//{name:'mongodb.org'}//MongoDBwillcreatethe_idwheninsertedp.save(function(err){if(err)returnhandleError(err);Page.findById(p,function(err,doc){if(err)returnhandleError(err);console.log(doc);//{name:'mongodb.org',_id:'50341373e894ad16347efe12'}})})实际测试发现根本就不会save成功,会提示:[Error:documentmusthavean_idbeforesaving]请问如何关闭_id后实现保存?
查看完整描述

2 回答

?
隔江千里

TA贡献1906条经验 获得超10个赞

每个document都必须有一个_id而且不能重复.
你关掉这个特性你就得自己制造一个_ID
所以,你当然保存不了.
                            
查看完整回答
反对 回复 2019-04-09
?
青春有我

TA贡献1784条经验 获得超8个赞

首先,_id是mongodb全局唯一到对象标识符,不会有重复的。
_id的值也可以自己定义,如果没有定义添加的话,系统就会使用默认生成的12个字节构成的对象标识
                            
查看完整回答
反对 回复 2019-04-09
  • 2 回答
  • 0 关注
  • 340 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信