Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb Mongoose:是否需要将自定义_id声明为索引并保持唯一_Mongodb_Mongoose - Fatal编程技术网

Mongodb Mongoose:是否需要将自定义_id声明为索引并保持唯一

Mongodb Mongoose:是否需要将自定义_id声明为索引并保持唯一,mongodb,mongoose,Mongodb,Mongoose,以下是使用Mongoose定义集合结构的常用方法: var UserSchema = new Schema({ _id: Schema.Types.ObjectId, username: String, ... }); 现在我想把_id字段声明为数字类型: var UserSchema = new Schema({ _id: Number, username: String, ... }); 问题是,我需要声明更多关于_id的信息吗?例如: v

以下是使用Mongoose定义集合结构的常用方法:

var UserSchema = new Schema({
    _id: Schema.Types.ObjectId,
    username: String,
    ...
});
现在我想把_id字段声明为数字类型:

var UserSchema = new Schema({
    _id: Number,
    username: String,
    ...
});
问题是,我需要声明更多关于_id的信息吗?例如:

var UserSchema = new Schema({
    _id: {type: Number, required: true, index: {unique: true}},
    username: String,
    ...
});
我不确定MongoDB是否会自动完成


如果你知道答案,你能在下面留下评论吗?谢谢大家! 经过一些实践,我意识到MongoDB会自动将_id设置为主键(非空+唯一索引)。因此,只需键入:

_id: Number,
...

当您创建一个新模型时,mongoose将“_id”声明为ObjectId,但还有另一个名为“id”的字段(不带下划线),因此此变量/字段转换为字符串。是的,这不是一个数字,但您可以更轻松地使用ObjectId。至于'u id',您完全正确,因为您可以手动设置它,如
“'u id:Number'
。Mongoose 3.6+中允许此选项。