gpt4 book ai didi

mongodb - 如何进行多个 mongoose 聚合搜索?

转载 作者:可可西里 更新时间:2023-11-01 10:41:29 27 4
gpt4 key购买 nike

我在 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 区分。

如何进行多重聚合搜索?

我只能得到一个,要么是pv,要么是uv,但不能同时得到它们。

我在 node.js 中使用 Mongoose

最佳答案

您首先需要确定您的分组 _id 是什么。您可以使用 memberIdplatformchannelpage 的唯一值来标识单个页面$sum 每个 $ip 的所有文档计数并添加另一个 $group 以计算不同的 IP 和 $sum 每页:

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

您可以找到示例输出/输出 here

关于mongodb - 如何进行多个 mongoose 聚合搜索?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42325866/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com