Javascript Mongoose$match和$sum运算符用于计算总销售成本
我正在创建一个比萨饼订购系统,下订单时,它将包含一个由其_id标识的比萨饼文档数组。我想使用订单中的比萨饼数组计算订单总额,并设置订单价格Javascript Mongoose$match和$sum运算符用于计算总销售成本,javascript,mongodb,mongoose,graphql,apollo-server,Javascript,Mongodb,Mongoose,Graphql,Apollo Server,我正在创建一个比萨饼订购系统,下订单时,它将包含一个由其_id标识的比萨饼文档数组。我想使用订单中的比萨饼数组计算订单总额,并设置订单价格 # Order Schema const orderSchema = new Schema({ username: String, total: Number, pizzas: [ { type: Schema.Types.ObjectId, ref: "piz
# Order Schema
const orderSchema = new Schema({
username: String,
total: Number,
pizzas: [
{
type: Schema.Types.ObjectId,
ref: "pizzas"
}
],
collectAt: String,
createdAt: String
});
# Pizza Schema
const pizzaSchema = new Schema({
location: String,
price: Number,
toppings: [
{
type: Schema.Types.ObjectId,
ref: "toppings"
}
],
createdAt: String
});
我正在使用Apollo Server和GraphQL构建这个系统,以便在对订单类型进行查询或变异时计算订单总数。现在使用$match和$sum运算符计算订单总额时,订单总额为0
total: (parent) => {
let orderTotal = 0;
const pizzaIds = parent.pizzas.map((pId) =>
mongoose.Types.ObjectId(pId)
);
Pizza.aggregate([
{
$unwind: "$pizzas"
},
{
$match: {
_id: { $in: pizzaIds }
}
},
{
$group: {
totalValue: { $sum: "$price" }
}
}
]),
function (err, result) {
orderTotal = result;
};
return orderTotal;
}