Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/425.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Mongoose$match和$sum运算符用于计算总销售成本_Javascript_Mongodb_Mongoose_Graphql_Apollo Server - Fatal编程技术网

Javascript Mongoose$match和$sum运算符用于计算总销售成本

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

我正在创建一个比萨饼订购系统,下订单时,它将包含一个由其_id标识的比萨饼文档数组。我想使用订单中的比萨饼数组计算订单总额,并设置订单价格

# 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;
    }