【发布时间】:2019-12-10 09:40:06
【问题描述】:
我有这 3 个课
@Document(collection = "Countries")
class CountryDoc
{
@Id
lateinit var id : String
var name : String = ""
var governorates : ArrayList<Governorate> = ArrayList()
}
class Governorate
{
var id : String = ""
var name : String = ""
var cardinalPoint : CardinalPoint = CardinalPoint.SOUTH_WEST
var cities : ArrayList<City> = ArrayList()
}
class City
{
var id : String = ""
var name : String = ""
}
我想得到一个城市的完整地址,结果一定是这样的
{
"countryId" : ""
"countryName" : "",
"governorateId" : "",
"governorateName" : "",
"cardinalPoint" : ""
"cityId" : "",
"cityName" : ""
}
我试过这个查询但没有用,我只有国家的信息
val countryCriteria = Criteria.where("id").`is`(countryId)
val governorateCriteria = Criteria.where("id").`is`(governorateId)
val cityCriteria = Criteria.where("id").`is`(cityId)
val aggregation = Aggregation.newAggregation(
Aggregation.match(countryCriteria),
Aggregation.project().and("id").`as`("countryId").and("name").`as`("countryName"),
Aggregation.unwind("governorates"),
Aggregation.match(governorateCriteria),
Aggregation.project().and("name").`as`("governorateName").and("id").`as`("governorateId").and("cardinalPoint").`as`("cardinalPoint")
Aggregation.unwind("cities"),
Aggregation.match(cityCriteria)
Aggregation.project().and("name").`as`("cityName").and("id").`as`("cityId")
)
val result = mongoDb.aggregate(aggregation, CountryDoc::class.java, Address::class.java).uniqueMappedResult
我不明白为什么这对我不起作用,有人可以帮助我吗?
【问题讨论】:
标签: java mongodb kotlin spring-data