질문이라 당연히 본삭금 걸고 질문 드립니다.
몇일전에 몽고 관련해서 입사 시험 준비문제로 질문 드렸었는데
결과만 말씀드리면 그자리에서 깔끔히 짤렸고요.
거기서 나온 문제 관련해서 질문 드립니다.
다른것보다 이게 제 발목을 잡았는데요
우선 몽고디비에 들어있는 샘플 데이터 구조입니다.
{
"_id": 111,
"default_group_id" : "123",
"groups" : {
"123" : { // 이 키 값이 "group_id"의 벨류값과 항상 동일합니다.
"group_id" : "123"
...
"345" : {
"stores" : {
"store_id" : "345",
....
}
}
}
}
}
여기서 group_id 가 "123"인 도큐먼트를 어떻게 쿼리를 날려서 찾아야 하나요?
원래 문제는 이것 말고도 category_entity 컬렉션(테이블)과 product_entity 컬렉션 세개의 테이블을 조합해서
getProducts($group_id, $language, $result_type) 라는 함수를 만들고 그룹 아이디에 해당하는 품목을 원하는 언어로 리스트를 쭉 뽑는게 문제였었죠..
RDB 였으면 웬만한 프로그래밍 언어 가지고 뽑아내는건 주어진 시간내에 만들어내는건 저한텐 큰 문제가 아니었을 문제였는데 몽고디비여서 도대체 어떻게 쿼리를 뽑아내야 할지 모르겠더군요.
고작 3개 테이블 조인 정도 좀 복잡해도 한시간도 안걸려 쿼리를 뽑아냈을 터인데 .. ㅠㅠ
정말 골때리는건 저런 구조를 생각도 못해봤었다는겁니다.
저는 몽고디비로 JSON (혹은 BSON) key : value 쌍으로 되어 있는 테이블 구조에
key에 해당하는 value를 가지고 검색 한다는 것 정도만 알고 있었는데
사용하려는 key 값 자체를 검색하는건 어떻게 하는걸까요?
고수분들의 조언을 부탁드립니다.
미리 감사드립니다.