您可以尝试低于聚合
Group.aggregate([
{ "$lookup": {
"from": Invitations.collection.name,
"let": { "invitations": "$invitations" },
"pipeline": [
{ "$match": { "$expr": { "$in": [ "$_id", "$$invitations" ] } } }
],
"as": "invitations"
}},
{ "$match": { "invitations.user": user._id } }
])
或者这个
Group.aggregate([
{ "$lookup": {
"from": Invitations.collection.name,
"let": { "invitations": "$invitations" },
"pipeline": [
{ "$match": {
"user": user._id,
"$expr": { "$in": [ "$_id", "$$invitations" ] }
}}
],
"as": "invitations"
}},
{ "$match": { "invitations.user": user._id } }
])
最后一个我认为是最好的选择
User
收集
User.aggregate([
{ "$match": { "_id": user._id }},
{ "$lookup": {
"from": Groups.collection.name,
"let": { "userId": "$_id" },
"pipeline": [
{ "$match": { "$expr": { "$eq": [ "$created_by", "$$userId" ] }}}
],
"as": "groups"
}}
])