db.logActionsContent.aggregate([
{
$match: {
'verb._id': 'http://e4e.deltaww.com/deltaknew/academy/verbs/opened',
'object.extensions.type': 'activity',
'object.extensions.courseId': '558eefe6-55df-4ea5-86dd-6d5674257410',
timestamp: {
$gte: ISODate("2019-07-21T00:00:00.000Z"),
$lt: ISODate("2019-07-28T00:00:00.000Z")
}
}
},
{
$project: {
day: {
$substr: ['$timestamp', 0, 10]
},
user_id: '$actor.extensions.userId',
course_id: '$object.extensions.courseId'
}
},
{
$group: {
_id: {
day: '$day',
course_id: '$course_id',
},
day: {
$first: '$day'
},
course_id: {
$first: '$course_id'
},
userIdSet: {
$addToSet: '$user_id'
},
}
},
{
$project: {
_id: 1,
day: 1,
course_id: 1,
day: 1,
userCount: {
$size: '$userIdSet'
},
}
},
{
$group: {
_id: '$course_id',
course_id: {
$first: '$course_id'
},
userCount: {
$sum: '$userCount'
},
}
},
{
$lookup: {
from: "courseCatagoryMapping",
localField: "course_id",
foreignField: "courseId",
as: "courseCatagoryMapping"
}
},
{
$unwind: {
path: "$courseCatagoryMapping",
preserveNullAndEmptyArrays: true,
},
},
{
$project: {
_id: '$course_id',
userCount: 1,
catagoryId: '$courseCatagoryMapping.catagoryId',
}
},
{
$group: {
_id: '$catagoryId',
catagoryId: {
$first: '$catagoryId'
},
userCount: {
$sum: '$userCount'
},
}
},
{
$sort: {
userCount: - 1,
catagoryId: - 1,
}
},
{
$lookup: {
from: "categoryInformation",
localField: "categoryId",
foreignField: "categoryId",
as: "categoryInformation"
}
},
{
$unwind: {
path: "$categoryInformation",
preserveNullAndEmptyArrays: true,
},
},
]);
Mongo的聚合查询
最新推荐文章于 2024-04-15 14:23:23 发布
这篇博客详细记录了一次使用MongoDB进行数据分析的过程,涉及日志actionsContent集合中特定时间段内(2019年7月21日至28日)特定课程(558eefe6-55df-4ea5-86dd-6d5674257410)的访问情况。通过$match、$project、$group、$lookup和$unwind等操作,统计了每天的访问用户数,并进一步根据课程类别进行聚合,计算出每个类别的总访问用户数。最后,通过对课程类别与相关信息的联查,得到类别ID和对应的访问用户数,按照用户数降序排列,展示了数据分析的完整流程。
652

被折叠的 条评论
为什么被折叠?



