相互的Mongoose嵌入文档
Mongoose embedded documents of each other
我有一个包含这些集合的 mongoDb 数据库
collection: Category
{
id:
catnumber:
nameNL:
nameFR:
subcategories:[id:, nameNL:, nameFR]
products:[id,nameNL,nameFR]
}
Collection: Product
{
id:
nameNL:
nameFR:
descriptionNL:
descriptionFR:
code1:
code2:
categories:[id:,nameNl:,nameFR]
image:
}
如你所见,我对 fields.Now 进行了非规范化,我不知道如何使用 mongoose 模式 link。
我有这个,但这似乎不对:
var Schema = mongoose.Schema;
var ProductSchema = new Schema({
_id: Number,
nameNL: String,
nameFR:String,
descriptionNL:String,
descriptionFR:String,
code1:String,
code2:String,
categories: [CategorySchema._id,CategorySchema.nameNL,CategorySchema.nameFR]
});
var CategorySchema = new Schema({
_id:Number,
catNumber: String,
nameNL: String,
nameFR:String,
subcategories:[CategorySchema.nameNL,CategorySchema.nameFR],
products:[ProductSchema._id,ProductSchema.nameNL,ProductSchema.nameFR]
});
我的非规范化有误吗?(应用程序需要大量获取类别名称和产品名称,这就是我对其进行非规范化的原因)
你的猫鼬语法有点不对劲。试试这个(下面):
请注意,我建议删除根架构的 _id
字段。 Mongo会自动为你生成一个_id
字段,类型为ObjectId
,可以派上用场。如果您愿意,您确实可以选择使用 _id: Number
覆盖它,但我只建议您在有充分理由的情况下这样做。
var Schema = mongoose.Schema;
var ProductSchema = new Schema({
nameNL: String,
nameFR: String,
descriptionNL: String,
descriptionFR: String,
code1: String,
code2: String,
categories: [{
_id: { type: Schema.Types.ObjectId, ref: 'Category' },
nameNL: String,
nameFR: String
}]
});
var CategorySchema = new Schema({
catNumber: String,
nameNL: String,
nameFR: String,
subcategories: [{
_id: { type: Schema.Types.ObjectId, ref: 'Category' },
nameNL: String,
nameFR: String
}],
products: [{
_id: { type: Schema.Types.ObjectId, ref: 'Product' },
nameNL: String,
nameFR: String
}]
});
我有一个包含这些集合的 mongoDb 数据库
collection: Category
{
id:
catnumber:
nameNL:
nameFR:
subcategories:[id:, nameNL:, nameFR]
products:[id,nameNL,nameFR]
}
Collection: Product
{
id:
nameNL:
nameFR:
descriptionNL:
descriptionFR:
code1:
code2:
categories:[id:,nameNl:,nameFR]
image:
}
如你所见,我对 fields.Now 进行了非规范化,我不知道如何使用 mongoose 模式 link。
我有这个,但这似乎不对:
var Schema = mongoose.Schema;
var ProductSchema = new Schema({
_id: Number,
nameNL: String,
nameFR:String,
descriptionNL:String,
descriptionFR:String,
code1:String,
code2:String,
categories: [CategorySchema._id,CategorySchema.nameNL,CategorySchema.nameFR]
});
var CategorySchema = new Schema({
_id:Number,
catNumber: String,
nameNL: String,
nameFR:String,
subcategories:[CategorySchema.nameNL,CategorySchema.nameFR],
products:[ProductSchema._id,ProductSchema.nameNL,ProductSchema.nameFR]
});
我的非规范化有误吗?(应用程序需要大量获取类别名称和产品名称,这就是我对其进行非规范化的原因)
你的猫鼬语法有点不对劲。试试这个(下面):
请注意,我建议删除根架构的 _id
字段。 Mongo会自动为你生成一个_id
字段,类型为ObjectId
,可以派上用场。如果您愿意,您确实可以选择使用 _id: Number
覆盖它,但我只建议您在有充分理由的情况下这样做。
var Schema = mongoose.Schema;
var ProductSchema = new Schema({
nameNL: String,
nameFR: String,
descriptionNL: String,
descriptionFR: String,
code1: String,
code2: String,
categories: [{
_id: { type: Schema.Types.ObjectId, ref: 'Category' },
nameNL: String,
nameFR: String
}]
});
var CategorySchema = new Schema({
catNumber: String,
nameNL: String,
nameFR: String,
subcategories: [{
_id: { type: Schema.Types.ObjectId, ref: 'Category' },
nameNL: String,
nameFR: String
}],
products: [{
_id: { type: Schema.Types.ObjectId, ref: 'Product' },
nameNL: String,
nameFR: String
}]
});