node.js - 如何找到在 7 天内访问我的网站超过 3 天的用户?
问题描述
我想在 7 天、15 天和 30 天中找到所有访问我的页面超过 3 天的用户
我找到访问我网站的用户总数,并根据用户进行计数,但它与我的结果不符
我的收藏就像
{
"_id" : ObjectId("5cf110a80556ac496396d07c"),
"user" : "sachin",
"event" : "page-navigation",
"data" : {
"url" : "/"
},
"addedAt" : ISODate("2019-05-14T11:31:52.755Z"),
"__v" : 0
}
{
"_id" : ObjectId("5cf110a80556ac496396d07c"),
"user" : "sachin",
"event" : "page-navigation",
"data" : {
"url" : "/"
},
"addedAt" : ISODate("2019-05-15T11:31:52.755Z"),
"__v" : 0
}
{
"_id" : ObjectId("5cf110a80556ac496396d07c"),
"user" : "sachin",
"event" : "page-navigation",
"data" : {
"url" : "/"
},
"addedAt" : ISODate("2019-05-16T11:31:52.755Z"),
"__v" : 0
}
等等...考虑最多 45 天
请忽略 _id 和上面的示例数据,Sachin 在 1 周内访问了我的网站 3 天,并且在 7 天内有 3 天访问量如此之多
db.getCollection('usertracks').aggregate([
{$project: {
yearMonthDay: { $dateToString: { format: "%Y-%m-%d", date: "$addedAt", timezone: "+05:30" } }
}},
{
$group:
{
_id: {
addedAt: "$yearMonthDay",
user: "$user"
},
users: { $sum: 1 }
}
},
])
如果任何用户在 7 天内访问我的网站超过 3 天,则应返回该用户详细信息。帮助我找到解决方案。
谢谢你的帮助!
输出:
{
"user":"Sachin"
}
解决方案
const getUserCategoryDetails = async function(){
const activeUsers = await UserTrack.aggregate([
{
$project: {
yearMonthDay: { $dateToString: { format: "%Y/%m/%d", date: "$addedAt", timezone: "+05:30" } },
user:"$user"
}
},
{
$group:
{
_id:"$user",
"visitedDate": {$addToSet:{date:"$yearMonthDay"}}
}
},
{$unwind: "$visitedDate"},
{$sort: {"visitedDate":1}},
{$group:
{
_id: "$_id",
visitDate: {$push: "$visitedDate"}
}
}
]);
这是根据用户查找所有日期的代码
推荐阅读
- android - 将json传递给cakephp后端android studio
- c# - C# Ninjascript - NinjaTrader 8 (NT8) - 获取事件时间和日期的代码,然后在文本框中的图表上显示
- python - 使用 pycharm 在 googlemaps 上绘图
- python - RuntimeError:无法使用来自“CPU”后端的参数运行“aten::to_dense”
- python - 连胜数低于 0
- ansible - 在ansible中获取已安装包列表和所需包列表之间的差异列表
- python - python:从文本文件创建字典:输入短文本并返回长文本
- python - 以键值格式加载 apache_superset 中的 json 数据
- ansible - 如何从ansible列表中过滤e过滤器字符串
- flutter - 如果使用 Getx,如何构建 Navigator()?