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中共享的聚合。谢谢