mongoose纲要

我有这些mongoose模式:

var ItemSchema = new Schema({ "pieces": Number, "item": { type: Schema.Types.ObjectId, ref: 'Items' } }); var cartSchema= new Schema({ "items": [ItemSchema] }); 

但是当我想要在项目中推新项目,mongoose添加_id字段(在新项目上),但我不明白为什么。

如果你想添加没有_id字段的项目,那么你应该在ItemSchema添加{ _id: false }

 var ItemSchema = new Schema({ "pieces": Number, "item": { type: Schema.Types.ObjectId, ref: 'Items' } }, { _id: false }); 

如果没有传递给Schema构造函数,Mongoose默认为每个模式分配一个_id字段。 分配的types是一个ObjectId,以符合MongoDB的默认行为。 如果您不想将_id添加到您的模式中,可以使用此选项禁用它。

您只能在子文档上使用此选项。 Mongoose不能在不知道id的情况下保存文档,所以如果您尝试保存没有_id的文档,将会出现错误。

链接: http : //mongoosejs.com/docs/guide.html#_id