var Group = new Schema({name: String})
위와 같은 스키마가 있을 때 find를 통해 같은 tag 값을 갖는 리스트를 얻고 싶을 때 다음과 같은 query를 작성할 수 있다.
Group.find({group: {$elemMatch : {tag: tag}}})
$elemMatch를 통해 group 배열 안에 있는 {tag: tag}에 해당하는 도큐먼트가 있다면 데이터를 찾아내 리스트로 출력한다.
$in 이 좀 헛갈렸는데 $in은 해당 키 값에 해당하는 value 값들 중에서 일치하는 documents를 찾는다.
이게 뭔 차이냐먼.. 내 생각에는 $in을 사용해보니 계속 parse error 나는 것 보니까 {tag: tag} 를 value로써 인식하지 못하는 것 같다.
$elemMatch를 사용하지 않는 또 다른 방법이 있다.
Group.find({"group.tag": tag})
위 방식은 '.' 으로 path를 지정해서 찾는 경우이다.
'IT > Mongodb' 카테고리의 다른 글
서브 도큐먼트 검색 후 값 변경 (0) | 2018.02.07 |
---|---|
도큐먼트 필드 삭제하기 (0) | 2017.12.30 |
ISO Date 값이 한국 시간과 다를때 (1) | 2017.10.31 |
스키마 모델링 어떻게 해야 하나 (0) | 2017.10.21 |