Answers:
很简单,您可以在以下子模式中定义它:
var mongoose = require("mongoose");
var subSchema = mongoose.Schema({
//your subschema content
},{ _id : false });
var schema = mongoose.Schema({
// schema content
subSchemaCollection : [subSchema]
});
var model = mongoose.model('tablename', schema);
{ _id: false }
,子模式的两个级别都没有ID。有什么办法可以解决此问题?
{ _id : true }
吗?
let studentSchema = new Schema({ studentId: { type: ObjectId, ref: Student.modelName }, performance: [performanceSchema] }, { _id: false });
this,let studentSchema = new Schema({ _id: false, id: false, studentId: { type: ObjectId, ref: Student.modelName }, performance: [performanceSchema] });
并停止了在子文档数组中对象上的_id
创建,studentSchema
但保留_id
了该对象上的创建performance
。不知道这两个_id: false
和id: false
需要。
您可以创建没有模式的子文档,并避免使用_id
。只需添加_id:false
到您的子文档声明中即可。
var schema = new mongoose.Schema({
field1:{
type:String
},
subdocArray:[{
_id:false,
field :{type:String}
}]
});
这将阻止创建 _id
在子文档中字段。
在猫鼬中测试 v5.9.10
我正在使用猫鼬4.6.3,我所要做的就是在模式中添加_id:false,无需进行子模式处理。
{
_id: ObjectId
subDocArray: [
{
_id: false,
field: "String"
}
]
}
_id
是字段而不是约束。
_id = mongoose.Types.ObjectId()
,那么_id在整个集合中是唯一的吗?
您可以使用任何一个
var subSchema = mongoose.Schema({
//subschema fields
},{ _id : false });
要么
var subSchema = mongoose.Schema({
//subschema content
_id : false
});
在使用第二个选项之前,请检查您的猫鼬版本
_id
仅在subSchema集合中,或者仅在使用subSchema作为子文档项数组嵌入的情况下,才跳过字段?我之所以这么问,尤其是因为我今天对SO 提出了自己的问题。