mongoTemplate.aggregate联表排序
时间: 2023-05-27 17:01:30 浏览: 116
mongo spring boot Aggregate 例子
5星 · 资源好评率100%
要在MongoDB中使用聚合来联结和排序两个或多个集合,可以使用以下方式:
1. 使用$lookup操作符将两个或多个集合联结起来。
2. 使用$sort操作符根据需要排序的字段对联结后的文档进行排序。
例如,假设我们有两个集合:users和orders。我们想要获取用户和他们的最新订单,按照订单日期降序排列。我们可以使用以下聚合管道:
```
mongoTemplate.aggregate([
{ $lookup: {
from: "orders",
localField: "userId",
foreignField: "userId",
as: "orders"
}
},
{ $unwind: "$orders" },
{ $sort: { "orders.orderDate": -1 } },
{ $group: {
_id: "$_id",
userId: { $first: "$userId" },
name: { $first: "$name" },
latestOrder: { $first: "$orders" }
}
}
])
```
在这里,我们首先使用$lookup操作符联结了users和orders集合,并将orders子文档存储在名为“orders”的数组中。
然后,我们使用$unwind操作符将数组展开为单个文档,以便可以按照订单日期进行排序。
接下来,我们使用$sort操作符按照订单日期降序排列orders文档。
最后,我们使用$group操作符将每个用户和其最新订单合并为一个文档,并返回最终结果。
阅读全文