Mongodb с групповым с многократным счетчиком - PullRequest
1 голос
/ 13 июня 2019

MongoDB, у меня есть такая коллекция

/* 1 */
{
    "_id" : ObjectId("5d02308e129aab55b3df814a"),
    "title" : "fgdfg",
    "user_id" : "5bc5dc03f6d24d29077dd362",
    "click" : false,
    "type_id" : "5d00a304430fee3160ac881f",
    "type" : "user_notification",
    "__v" : 0
}

/* 2 */
{
    "_id" : ObjectId("5d02308e129aab55b3df8149"),
    "title" : "fgdfg",
    "user_id" : "5bc5dc03f6d24d29077dd362",
    "click" : true,
    "type_id" : "5d00a304430fee3160ac881f",
    "type" : "user_notification",
    "__v" : 0
}

/* 3 */
{
    "_id" : ObjectId("5d02308e129aab55b3df8148"),
    "title" : "fgdfg",
    "user_id" : "5bc5dc03f6d24d29077dd362",
    "click" : true,
    "type_id" : "5d00a304430fee3160ac881f",
    "type" : "user_notification",
    "__v" : 0
}

Я хочу, чтобы с помощью группы «type_id» по запросу и тому же запросу я хотел, чтобы сколько «кликнуло» поля true и false для type_id.

Вывод: я хочу, чтобы общее количество type_id и общее число "click" в поле "true" в каждом типе идентифицировалось в одном запросе.

1 Ответ

1 голос
/ 13 июня 2019

Вы можете использовать MongoDB Group,

let query = [{
    $group: {
        _id: "$type_id",
        "true": { $sum: { $cond: [{ $eq: ['$click', true] }, 1, 0] } },
        "false": { $sum: { $cond: [{ $eq: ['$click', false] }, 1, 0] } },

    },
}, {
    $addFields: {
        "addition": { $add: ["$true", "$false"] }
    }
}]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...