db.users.aggregate([
// 筛选出好友数超过10的用户
{
$match: {
friends: { $size: { $gt: 10 } }
}
},
// 将用户和他们发布的帖子进行关联
{
$lookup: {
from: "posts",
localField: "_id",
foreignField: "author",
as: "userPosts"
}
},
// 筛选出有发布帖子的用户
{
$match: {
userPosts: { $ne: [] }
}
},
// 计算每个用户发布帖子的平均点赞数和平均评论数
{
$addFields: {
averageLikes: {
$cond: [
{ $eq: [ { $size: "$userPosts" }, 0 ] },
0,
{
$divide: [
{ $sum: { $map: { input: "$userPosts", in: { $size: "$$this.likes" } } } },
{ $size: "$userPosts" }
]
}
]
},
averageComments: {
$cond: [
{ $eq: [ { $size: "$userPosts" }, 0 ] },
0,
{
$divide: [
{ $sum: { $map: { input: "$userPosts", in: { $size: "$$this.comments" } } } },
{ $size: "$userPosts" }
]
}
]
}
}
},
// 筛选出平均点赞数超过50且平均评论数超过10的用户
{
$match: {
averageLikes: { $gt: 50 },
averageComments: { $gt: 10 }
}
}
]);