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的聚合查询
