2012-02-01 5 views
0

나는 Forms라고 불리는 콜렉션을 가지고 있습니다. 그 콜렉션 안에 Form_Fields라는 서브 콜렉션이 있습니다. 따라서 문서는 다음과 같이 보일 수 있습니다.Mongodb - PHP에서 임베디드 배열 찾기

} 
    "_id": ObjectId("4f2984b1af06e80418000000"), 
    "Form_Name": "Users", 
    "Form_Fields": [ 
        {"Field_Name": "First_Name"}, 
        {"Field_Name": "Last_Name"} 
        ] 
} 

어떻게 양식 필드의 배열을 찾을 수 있습니까?

나는 시도했다 :

$collection->find(array("Form_Name"=>"Users"); 

하지만 그

First_Name, Last_Name 

내가 뭘 달성하려고하는 것은 FORM_NAME으로 문서를 찾을 것입니다 발견을 수행하는이 = 배열을 반환하지 않습니다 사용자 및 모든 Form_Field를 포함하는 배열을 반환합니다.

나는이 권리가 아니라 무엇인가 알고

find(array("Form_Name=>"Users"(array(Form_Fields))) 

그리고 그것은 단지 2 FIELD_NAMES의 배열을 반환?

누군가가 배열에서 '사용자'양식 요소를 찾기 위해 "찾기"를 구성 할 수 있습니까? 그래서 'Form_Name'= '사용자'문서로 문서 안의 모든 'Form_Fields'를 찾고 싶습니다.

감사합니다.

업데이트

내가 특정 부모 문서 속성이 포함 된 문서를 검색 할 수 있습니다. 그래서 내가 수집 "양식"을 가지고 있고 나는이 해당 모음의 내부에 포함 된 말할 수 doc "Form_Fields"라고합니다. 각 양식에 포함 된/관련 필드가 있습니다. "Form_Name"속성 ("사용자")을 사용하여 문서의 모든 포함 된 양식 필드를 찾습니다.

내가 좋아하는 내장 된 검색을 수행해야합니다

$ (배열 ("FORM_NAME"=> "사용자")) 찾을 수> = $ 모음 - 커서;

// form_name = users 인 doc을 반환합니다. // i는 다음과 같이 사용하여 해당 검색 확장해야 :

$ 커서를 -> 찾을

("검색이 포함 된 모든 Form_Fields를 찾으려면")?

답변

1

가져올 문서의 필드를 지정할 수 있습니다. 다음은 자바 스크립트의 예제입니다.

db.collection.find({"Form_Name": "Users"}, {"Form_Fields": 1}); 

이 두 개의 필드, _idForm_Fields있는 문서 (또는 여러)를 반환합니다. _id을 원하지 않으면 특별히 제외해야합니다.

db.collection.find({"Form_Name": "Users"}, {"Form_Fields": 1, "_id": -1}); 
+0

하지만 모두 가져오고 싶다면 어떻게해야합니까? 또한 나는 껍질 아닌 PHP를 사용하고 있습니다, 당신은 PHP에서 예제를 줄 수 있습니까? 고맙습니다. – user982853

+0

모두 가져 오기? 또한 문서의 모든 예제가 자바 스크립트이므로 쉘 언어에서 PHP로 직접 번역 할 수 있어야합니다. –

+0

예 번역 할 수 있습니다. 좋아, 명확성을 위해 q를 다시 설명하겠습니다. 특정 부모 특성을 가진 포함 된 문서를 검색하고 싶습니다.그래서 내가 컬렉션 "양식"을 가지고 있고 그 콜렉션 안에 "Form_Fields"라고 불리는 문서가 내장되어 있다고 말할 수 있습니다. 그래서 각 양식에는 임베디드/관련 필드가 있습니다. "Form_Name"속성 ("사용자")을 가진 문서의 모든 포함 된 양식 필드를 찾고 싶었습니다. 위의 업데이트를 참조하십시오. – user982853