【发布时间】:2018-12-24 00:35:04
【问题描述】:
我正在尝试使用 MongoDB 创建一个电子商务网站。我创建了一个产品和变体模型,我的问题是如何搜索具有变体的产品,例如对于“尺寸”,用户可以将变体值添加为“S”或“小”。在这种情况下,我如何搜索具有例如小产品的产品,因为产品有很多变体,我如何列出例如。所有小尺寸的产品。这是我的变体模型。
var variantSchema = Schema({
name: {
type: String,
required: true,
unique: true
},
count: {type: Number, default : 0}
});
我的产品架构是:
var productSchema = Schema({
sku: {
type: String,
lowercase: true
}, //, required: true, unique: true
name: {
type: String,
lowercase: true,
max: 65,
required: true
},
slug: {
type: String,
lowercase: true,
unique: true,
index: true,
slug: "name",
slug_padding_size: 3
},
status: Boolean,
listPrice: Number,
description: {
short: {
type: String,
trim: true,
lowercase: true
},
long: {
type: String,
trim: true,
lowercase: true
}
},
images: [],
categoryId: {
type: Schema.Types.ObjectId,
ref: 'Category'
},
userId: {
type: Schema.Types.ObjectId,
ref: 'User',
required: true
},
createdAt: {
type: Date,
default: Date.now
},
updatedAt: {
type: Date,
default: Date.now
},
isActive: Boolean,
vars: [
{
varId : {
type: Schema.Types.ObjectId,
ref: 'Variants'
},
values: [
{
value : String,
image:[]
}
]
}
]
});
【问题讨论】:
-
你能在这里转储一些数据吗?一个来自 Product 一个来自 Variant?
-
@HardikShah varianSchema 仅包含名称,例如:尺寸、颜色等,并且在产品变量中包含变量 ID 和值,例如:varId:123 和值是用户添加的任何内容,他可以输入“S”或“小的”。我的问题是我怎么知道“S”和“Small”是一样的。提前致谢
标签: mongodb mongoose database-design nosql schema