Mongoose Saving _id's as Numbers

时间:2015-07-22 21:54:47

标签: node.js mongodb mongoose

我想将_id保存为Number,如本文档中所示:

  

_id:数字,

从这里采取:http://mongoosejs.com/docs/populate.html

但是,在使用此代码时,我将数据保存到Model时没有收到任何错误。如果我删除此行,则会ObjectID

保存而不会失败

我的代码:

var UserSchema = new Schema({
    _id: Number
});

mongoose.model('User', UserSchema)

1 个答案:

答案 0 :(得分:0)

Mongoose会自动为您创建的每个文档分配_id,与默认情况下ObjectId的一般MongoDB文档保持一致。要更改此行为,请将其关闭:

var UserSchema = new Schema({
    _id: Number
},{ "_id": false });

mongoose.model('User', UserSchema)

因此,此选项会禁用_id代,这可能会导致"顶级"架构,除非你自己定义字段。当你这样做时,尊重并使用给定的类型。

如果没有该选项,则使用默认值并覆盖您在架构中使用的任何声明。所以这段代码现在按预期工作:

user = new User({ "_id": 1 });

user.save(function(err,doc) {
    if (err) throw err;      // but wont fail to cast type now
    console.log( doc );
});