From c1288c0aaf67c6d4c4c43ef8495b6b0d971fafe3 Mon Sep 17 00:00:00 2001 From: nightwhite Date: Wed, 3 Jul 2024 04:46:45 +0800 Subject: [PATCH] fix: Compatible with mongo 4.4 syntax --- server/src/group/group.service.ts | 69 ++++++++++++++++++------------- 1 file changed, 40 insertions(+), 29 deletions(-) diff --git a/server/src/group/group.service.ts b/server/src/group/group.service.ts index b65e0c58d1..13191c27ea 100644 --- a/server/src/group/group.service.ts +++ b/server/src/group/group.service.ts @@ -81,36 +81,47 @@ export class GroupService { async findGroupsByAppidAndUid(appid: string, uid: ObjectId) { const res = await this.db .collection('GroupApplication') - .aggregate() - .match({ appid }) - .lookup({ - from: 'Group', - localField: 'groupId', - foreignField: '_id', - as: 'group', - }) - .unwind('$group') - .lookup({ - from: 'GroupMember', - localField: 'groupId', - foreignField: 'groupId', - pipeline: [ - { - $match: { - uid, - }, + .aggregate([ + { $match: { appid } }, + { + $lookup: { + from: "Group", + localField: "groupId", + foreignField: "_id", + as: "group", }, - ], - as: 'member', - }) - .unwind('$member') - .project({ - _id: '$group._id', - name: '$group.name', - createdAt: '$group.createdAt', - updatedAt: '$group.updatedAt', - role: '$member.role', - }) + }, + { $unwind: "$group" }, + { + $lookup: { + from: "GroupMember", + let: { groupId: "$groupId" }, + pipeline: [ + { + $match: { + $expr: { + $and: [ + { $eq: ["$groupId", "$$groupId"] }, + { $eq: ["$uid", uid] }, + ], + }, + }, + }, + ], + as: "member", + }, + }, + { $unwind: "$member" }, + { + $project: { + _id: "$group._id", + name: "$group.name", + createdAt: "$group.createdAt", + updatedAt: "$group.updatedAt", + role: "$member.role", + }, + }, + ]) .toArray() return res