С учетом этих моделей:
Продукты:
const productSchema = new Schema({
name: String,
description: String,
price: Number,
steps: [{
type: Schema.Types.ObjectId,
ref: 'steps'
}]
});
Шаги:
const stepSchema = new Schema({
name: String,
minimum: Number,
maximum: Number,
items: [
{
name: String,
price: Number
}
]
});
Есть ли лучший способ сделать запрос к объекту с N-ным количеством Products, а не со всеми выбранными products.steps без использования .populate () (потому что он сделает запрос для каждого значения в массиве products.steps) и для цикла для суммирования всех цен, включенных в productSchema и stepSchema?
Пример использования:
В моих документах у меня есть такая коллекция продуктов:
[{
id: 1
name: Pizza,
description: "Medium (3 flavors)",
price: 10,
steps: [{
"1",
"2"
}]
},
{
id: 2
name: Pizza,
description: "small (1 flavors)",
price: 10,
steps: [{
"1",
}]
}]
И такие шаги, как:
[{
id: 1
name: "Flavor",
minimum: 0,
maximum: 1,
items: [
{
id: 1
name: "mozzarella",
price: 4
},
{
id: 2
name: "pepperoni",
price: 5
}
]
},
{
id: 2
name: "Border",
minimum: 0,
maximum: 0,
items: [
{
id: 3
name: "With normal cheese",
price: 0
},
{
id: 4
name: "With special cheese",
price: 3
}
]
}]
Так есть ли лучший способ проверки объекта, подобного этому, в моем BD с меньшим количеством запросов и без цикла for?
products: [
{
productId: 1,
price: 30,
quantity: 3,
steps: [{
stepId: 1
items: [
{
itemId: 1,
price: 4
},
{
itemId: 2,
price: 5
}
]
}]
}
]