var Group = new Schema({
  "group": [{
    tag: String,
    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를 지정해서 찾는 경우이다.

+ Recent posts