데이터베이스/MongoDB
MongoTemplate in 순서대로 가져오기
65살까지 코딩
2022. 7. 15. 22:29
728x90
반응형
코드를 짜는중 데이터베이스 접근해서 In절로 데이터를 가져오되 In절에 담긴 순서대로 데이터를 가져오고 싶었습니다.
여러 구글링 합쳐본 결과 aggregation을 통해서 해결할 수 있었습니다.
방식을 먼저 설명하면
match 를 통해 데이터를 찾오고
addField와 IndexOfArray를 이용하여 order라는 attribute를 하나더 만들어 줍니다.
생긴 order을 이용하여 Sort를 하여 가져오면 됩니다.
fun getData(list: MutableList<String>): List<AssetAttribute> {
val match = match(Criteria.where("_id").`in`(list))
val addField = addFields().addField("_order").withValueOf(IndexOfArray.arrayOf(list).indexOf("\$_id")).build()
val sort = sort(Sort.Direction.ASC, "_order")
return mongoTemplate.aggregate(newAggregation(match, addField, sort), "test", Entity::class.java).mappedResults
}
728x90
반응형