【问题标题】:Mongoose: does a custom _id need to be declared as an index and be uniqueMongoose:自定义_id是否需要声明为索引并且是唯一的
【发布时间】:2015-11-01 06:20:09
【问题描述】:

这是用 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 是否会自动完成。

如果你知道答案,你能在下面发表评论吗?谢谢!

【问题讨论】:

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

标签: mongodb mongoose


【解决方案1】:

嗯,经过一些练习,我意识到,MongoDB 会自动将 _id 设置为 PRIMARY KEY (NOT NULL + UNIQUE INDEX)。所以,只需输入:

_id: Number,
...

【讨论】:

    猜你喜欢
    • 2018-06-25
    • 1970-01-01
    • 1970-01-01
    • 2012-03-12
    • 1970-01-01
    • 1970-01-01
    • 2020-02-02
    • 1970-01-01
    • 2013-11-11
    相关资源
    最近更新 更多