首页 > 解决方案 > Spring - 使用聚合返回嵌套文档

问题描述

我有 2 节课

class Team
{
    @Id
    var lateint id : String

    var name : String? = null

    var stadium : String? = null

    var players : List<Players>? = null
}

class Player
{
    @Id
    var lateint id : String

    var firstName : String? = null

    var lastName : String? = null

    var post : PlayerPost? = null

    var number : Int? = null
}

我正在尝试获取特定球队球员的过滤列表,但我总是得到错误的结果。

这是我的要求

val teamCriteria = Criteria.where("_id").`is`(teamId)

val postCriteria = Criteria.where("post").`is`("DEFENDER")

val aggregation = Aggregation.newAggregation(
    Aggregation.match(teamCriteria),
    Aggregation.unwind("players"),
    Aggregation.match(postCriteria),
)

return mongoDb.aggregate(aggregation, Team::class.java, Player::class.java).mappedResults

问题是我没有得到一个球员名单,而是让球队被复制为预期球员的数量。

预期结果

[
    {
        "id" : "id1",
        "firstName" : "player1"
        "lastName" : "player1",
        "number" : 2,
        "post" : "DEFENDER"
    },
    {
        "id" : "id2",
        "firstName" : "player2"
        "lastName" : "player2",
        "number" : 3,
        "post" : "DEFENDER"
    }
]

我总是得到这个结果

[
    {
        "id" : "id1",
        "name" : "team name"
        "stadium" : "stadium name",
        "players" : []
    },
    {
        "id" : "id1",
        "name" : "team name"
        "stadium" : "stadium name",
        "players" : []
    }
]

同一个人可以告诉我我的代码有什么问题吗?

标签: mongodbspring-dataaggregation-framework

解决方案


推荐阅读