停止 Mongoose 以创建自动索引

Stop Mongoose to create auto index

我正在尝试在 mongoose 中创建模式,它在 mongodb 中创建名为 _id 的新索引?

 const modelSchema = new Schema({
    uid: { type: Number, required: true },
    content: {
        text: { type: String },
        attachments: [{
            type: { type: String, enum: ['IMAGE', 'VIDEO', 'POLL', 'GOAL', 'POST', 'MILESTONE', 'ARTICLE', 'DOCUMENT', 'AUDIO', 'QUOTE', 'USER', 'TIP', 'URL'] },
            object_id: { type: Number }
        }]
    },
    created: { type: String }
});

我期待这样的结果:

"content" : {
"text" : "hello",
"attachments" : [ 
    {
        "type" : "IMAGE",
        "object_id" : 1
    }
]

我得到这个结果:

"content" : {
"text" : "hello",
"attachments" : [ 
    {
        "type" : "IMAGE",
        "object_id" : 1,
        "_id" : ObjectId("5a2664fd6db6672ac43f1823")
    }
]

您可以在定义架构时将 _id 设置为 false 以禁用自动 _id

var childSchema = new Schema({ name: String }, { _id: false });

检查http://mongoosejs.com/docs/guide.html#_id

mongo 将创建 _id 默认值,如果你想使用你自己的覆盖值你可以设置为

"_id" : 1

前 如果你插入 db.a.insert({"name":"abcd"}) 这将创建 _id 默认值 db.a.insert({"name":"abcd","_id":1}) 这将创建并将 _id 设置为 1