在 MongoDB 中可以直接对数组字段进行
$lookup
,完全不需要先将数组进行 $unwind
。
以下面的代码为例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| const userLevelRoles = await this.model('user').aggregate([ { $match: { userId: { $eq: userId } } }, { $lookup: { from: 'user_role', localField: '_id', foreignField: 'userId', as: 'userRoles' } }, { $lookup: { from: 'role', localField: 'userRoles.roleId', foreignField: '_id', as: 'rolesOfUser' } } ])
|
从上面的查询中我们可以看到,第一个 $lookup
出来的
userRoles
是一个数组,当用这个字段再次进行查询时,只需要将它当成一个对象使用即可。