如何进行多次mongoose聚合搜索?

时间:2017-02-19 09:59:15

标签: mongodb mongoose aggregation-framework

我在MongoDB中有如下结构:

{
    memberId: 1236,
    platform: "PC",
    channel: "A",
    page: "B",
    ip: "192.168.10.1",
    isActive: true,
    createOn: "2017-02-19T09:28:43.688Z",
    isSubmit: false,
}

现在我需要按如下方式进行聚合搜索:

{

    memberId: 1236,
    platform: "PC",
    channel: "A",
    page: "B",
    pv: 111,
    uv: 10
}

uv(用户观看次数)仅基于pv(页面浏览量)与ip不同。

如何进行多次聚合搜索?

我只能获得一个pvuv,但无法同时获取所有内容。

我在node.js中使用mongoose

1 个答案:

答案 0 :(得分:1)

首先需要确定您的分组_id。您可以使用memberIdplatformchannelpage$sum每个$ip的所有文档计数标识具有唯一标记值的单个页面,并且$group添加另一个$sum来计算不同的IP和每页Data.aggregate([{ $group: { _id: { memberId: "$memberId", platform: "$platform", channel: "$channel", page: "$page", ip: "$ip" }, pv: { $sum: 1 } } }, { $group: { _id: { memberId: "$_id.memberId", platform: "$_id.platform", channel: "$_id.channel", page: "$_id.page" }, pv: { $sum: "$pv" }, uv: { $sum: 1 } } }], function(err, res) { if (err) console.log(err); else console.log(res);) })

 git clone administrator@myserverip:/cygdrive/c/cossh/home/admin/git/vacationsabroad.git

您可以找到样本输出/输出documentation