在春季使用mongodb聚合展平嵌套数组

时间:2019-12-27 10:52:06

标签: java mongodb kotlin spring-data aggregation-framework

我正在尝试使用聚合框架展平嵌套数组,但无法获得结果。 我的收藏是:

[
    {
        "id" : "xxx",
        "countryName" : "xxx",
        "cities" : [
            {
                "id" : "xxx",
                "cityName" : "xxx"
            },
            {
                "id" : "xxx",
                "cityName" : "xxx"
            }
        ]
    }
]

我想从所有国家获得城市,我想要的结果是:

[
    {
        "id" : "xxx",
        "cityName" : "xxx"
    },
    {
        "id" : "xxx",
        "cityName" : "xxx"
    }
]

我尝试了此请求:

val aggregation = Aggregation.newAggregation(
                Aggregation.group("cities")
        )

return mongoDb.aggregate(aggregation, Country::class.java, Any::class.java).mappedResults

但是,我得到了这个结果:

[
    {
        "_id": [
            {
                "id": "xxx",
                "cityName": "xxx"
            },
            {
                "id": "xxx",
                "cityName": "xxx"
            }
        ]
    }
]

有人可以帮我吗?

1 个答案:

答案 0 :(得分:0)

此聚合将帮助您实现结果,但必须使用Java驱动程序对其进行调整:

db.countries.aggregate([
  {
    "$unwind": "$cities"
  },
  {
    "$project": {
      "_id": 0,
      "cities": 1
    }
  },
  {
    "$replaceRoot": {
      "newRoot": "$cities"
    }
  }
])
相关问题