mongodb - 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" : []
}
]
同一个人可以告诉我我的代码有什么问题吗?
解决方案
推荐阅读
- javascript - React Native 如何读取实时数据库 Firebase
- menu - 在 Hugo 中订购菜单项
- ios - Flutter IOS 构建应用程序用于在特定设备上进行测试 XCode 9.2
- c++ - 如何通过函数指针递归调用类成员函数?
- marklogic - MarkLogic 9 - 运行 corb 时合并
- c++ - 类和向量
- bash - 如何从输出的第二行开始插入 0(零)
- javascript - 记住视频播放最后位置 Jquery ajax PHP
- velo - 蜡 | 为什么不能将自动加载输入文本值存储到数据库中
- gnuplot - Gnuplot:从 csv 文件中获取子字符串