2013-10-28 2 views
18

나는 biob 예제 컬렉션 http://docs.mongodb.org/manual/reference/bios-example-collection에서 mongodb 쿼리에 대한 자신을 교육하기 위해 놀고 있습니다. 년 1 : 1975mongodb 배열의 하위 문서 찾기

나는 _id에 의해 원 상에 대한 정보를 검색 할 수 있습니다.

나는 그

bios.find({ 
    "_id" : 1, 
    "awards" : { 
     "year" : 1975 
    } 
}); 

중, 여러 쿼리를 시도했지만 내가 다시 적절한 문서를 수신하지 않습니다. 배열에서이 문서를 검색하려면 어떻게해야합니까?

답변

31

당신이 사용할 수있는 dot notation : 당신은 또한 쿼리에서 _id을 가지고 있기 때문에

bios.find({"_id" : 1, "awards.year" : 1975 }); 

그것은 오히려 무의미한 질문이다,하지만 그건 당신이 예제와 함께 연주하고 있다는 사실로 인해 같아요 . 또한, 당신은 1967 년부터 상을 찾고 있다고 말하고 있지만 코드는 1975라고 말합니다.

"awards" : { "year" : 1975 }을 검색하면 mongodb는 전체 하위 문서 awards과 정확히 일치하는 것을 찾습니다. 이 경우, 그것은 당신이 원하는 것이 아닙니다. 또한 awards이 배열이기 때문에 항상 false입니다. 특정 보너스 문서를 목록에서 찾으려면 $elemMatch 가야합니다.

+0

올해는 오타였습니다. 이상한 설명을 해주셔서 대단히 감사합니다! –

관련 문제