У меня есть 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
}
Я пытаюсь получить отфильтрованный список игроков определенной команды c, но я всегда получаю неправильный результат.
это моя просьба
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" : []
}
]
Может ли один и тот же сказать мне, что не так в моем коде?