Spring Mongo-按数组中的对象排序的聚合
我有以下数据:Spring Mongo-按数组中的对象排序的聚合,spring,mongodb,spring-data-mongodb,Spring,Mongodb,Spring Data Mongodb,我有以下数据: { "_id": ObjectID("5e2fa881c3a1a70006c5743c"), "name": "Some name", "policies": [ { "cId": "dasefa-2738-4cf0-90e0d568", "weight": 12 }, { "cId": "c640ad67dasd0-92f9815835
{
"_id": ObjectID("5e2fa881c3a1a70006c5743c"),
"name": "Some name",
"policies": [
{
"cId": "dasefa-2738-4cf0-90e0d568",
"weight": 12
},
{
"cId": "c640ad67dasd0-92f981583568",
"weight": 50
}
]
}
我可以用Spring Mongo fine查询这个问题,但是我希望能够通过weight
目前,我通过以下方式获得了满意的结果:
返回mongoTemplate.find(查询,CArea::class.java)
但是,我可以做以下汇总:
val unwind = Aggregation.unwind("policies")
val sort = Aggregation.sort(Sort.Direction.DESC,"policies.weight")
我如何将这些应用于上面返回的结果?我希望点注释能在我的查询中起作用,但是没有做任何事情
例如query().with(Sort.by(options.sortDirection,“policies.weight”)
谢谢你的帮助
谢谢。我不熟悉Spring Mongo,但我想您可以将以下聚合转换为Spring代码
db.collection.aggregate([
{
$unwind: "$policies"
},
{
$sort: {
"policies.weight": -1
}
},
{
$group: {
_id: "$_id",
"policies": {
"$push": "$policies"
},
parentFields: {
$first: "$$ROOT"
}
}
},
{
$replaceRoot: {
newRoot: {
$mergeObjects: [
"$parentFields",
{
policies: "$policies"
}
]
}
}
}
])
这将导致:
[
{
"_id": "5e2fa881c3a1a70006c5743c",
"name": "Some name",
"policies": [
{
"cId": "c640ad67dasd0-92f981583568",
"weight": 50
},
{
"cId": "dasefa-2738-4cf0-90e0d568",
"weight": 12
}
]
}
]
您能将我的答案中的聚合转换为spring mongo代码吗?您好,我实际上是在客户端进行排序的,因为您的数据不多。我仍然需要了解如何编写您在Spring中共享的聚合。谢谢