Присоединяйтесь к трем коллекциям, затем суммируйте с помощью мангуста - PullRequest
0 голосов
/ 21 июня 2020

У меня есть три схемы, первая называется Stats, вторая - City, а третья - Region

//Stats Schema
const statSchema = new Schema({
    city: {
        type: Schema.Types.ObjectId,
        ref: 'City'
    },
    record_date: Date,
    active_cases: Number,
    total_cases: Number,
    new_cases: Number,
    total_recovered: Number,
    new_recovered: Number,
    total_deaths: Number,
    new_deaths: Number
});

//City Schema
const citySchema = new Schema({
    region: {
        type: Schema.Types.ObjectId,
        ref: 'Region'
    },
    name: String
});

//Region Schema
const regionSchema = new Schema({
    name: String
});

Теперь мне нужно собрать статистику по регионам, совпадая только с последней record_date, а затем сложите все вместе, чтобы получить только один объект статистики по регионам, как я могу это сделать, используя mon goose?

/////////

Edit: я понял способ собирать статистику по регионам при сопоставлении с последней record_date, но у меня все еще есть одна проблема, у меня есть только идентификатор региона, мне также нужно имя, добавление region_name в схему города решило проблему, но я думаю, что это неправильный способ сделать это, вот где я нахожусь ..

router.route("/join").get(function (req, res) {
    Stats.aggregate(
        [{
                $match: {
                    record_date: new Date(2020, 2, 31)
                }
            },
            {
                $lookup: {
                    from: "cities",
                    localField: "city",
                    foreignField: "_id",
                    as: "city"
                }
            },
            {
                $group: {
                    _id: "$city.region",
                    total_cases: {
                        $sum: "$total_cases"
                    },
                    active_cases: {
                        $sum: "$active_cases"
                    },
                    total_recovered: {
                        $sum: "$total_recovered"
                    },
                    total_deaths: {
                        $sum: "$total_deaths"
                    },
                    new_cases: {
                        $sum: "$new_cases"
                    }
                }
            }
        ],
        function (err, result) {
            if (err) {
                res.send(err);
            } else {
                res.json(result);
            }
        }
    );
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...