繁体   English   中英

在 spring 中使用 mongodb 聚合展平嵌套数组

[英]Flatten nested arrays using mongodb aggregation in spring

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

[
    {
        "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"
            }
        ]
    }
]

有人能帮助我吗?

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM