2013-11-27 2 views
0

작동하지 않음으로 수집 내부 배열에서 항목을 가져 오기 나는 다음과 같은 목적이 있습니다

{ 
    users: { 
     _id: "users", 
     entries: 
     [ 
      { 
       _id: 1, 
       username: "taxicala", 
       password: "password" 
      }, 
      { 
       _id: 2, 
       username: "guest", 
       password: "guest" 
      } 
     ] 
    } 
} 

을 그리고 나는 "항목"배열 내에 하나의 사용자를 선택합니다. 나는 다음과 같은 노력하고 있어요 : 내가 어떤 단서 구글 이상 또는 여기에 대한 찾을 수 없습니다

{ } 

:

$entry = $this->_users->find(
      array('entries' => 
       array('$elemMatch' => 
        array('username' => 'taxicala') 
       ) 
      ) 
     ); 

내가 얻을 결과는 빈 객체입니다. 내가 뭔가 잘못하고 있는거야? 내가 놓친 게 있니? 아니면 PHP에서 지원하지 않는 '$ elemMatch'입니까?

감사합니다.

답변

4

$ elemMatch가 지원되지만 문서가있는 한 entries은 사용자 object 안에 있습니다. 적어도 귀하의 질의에 귀하는 array('users.entries' => ...)을 입력해야합니다. 또한 나는 왜 당신이 $ elemMatch를 사용할 필요가 있는지 보지 못한다.

db.coll.find({"users.entries.username" : "taxacala"})은 사용자 이름이 "taxacala"인 문서를 출력합니다.

+0

감사합니다. 그건 나를 위해, 그럼에도 불구하고, 나는 잘못된 방식으로 내 데이터를 포맷했다 알았어, 나는 사용자 컬렉션에 사용자 개체를 추가했다. 이것은 당신이 뭔가 새로운 것을 할 때 얻는 것입니다 : D. 하지만 네가 준 대답은 옳았다. – taxicala