2012-02-01 15 views
0

私はフォームと呼ばれるコレクションを持っています。そのコレクションの中に私は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の配列を返しますか?

「ユーザー」フォームの要素を配列で見つけるための "find"を手助けできる人がいますか?そのため、Form_Name = 'Users'ドキュメントを含むすべての 'Form_Fields'

はありがとう。

更新

私は特定の親文書属性を持つ埋め込まれたドキュメントを検索したい。だから私は持っている私はコレクション「フォーム」を持っており、そのコレクションの中に埋め込ま言うことができますdoc "Form_Fields"と呼ばれています。各フォームには埋め込み/関連フィールドがあります。プロパティ "Form_Name": "Users"を持つドキュメントの埋め込みフォームフィールドをすべて検索します。

は、私のような埋め込まれた検索を実行する必要があります。

$(配列( "FORM_NAME" => "ユーザー"))を見つける> = $集・カーソル。

//これにより、form_name = usersのdocが返されます。 は//私はその後のようなもの使って、その検索を広げる必要があります。

$カーソル - >検索(「すべての埋め込みForm_Fieldsを見つけるための検索」)

を??

答えて

1

ドキュメントのどのフィールドをフェッチするかを指定できます。ここにあなたのJavaScriptの例があります。

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

すべてを取得しますか?また、ドキュメント内のすべての例はjavascriptになっているので、シェル言語からPHPへの翻訳は自分で行うことができます。 –

+0

はい、私は翻訳できます。さて、わかりやすくするためにqを書き直してみましょう。特定の親属性を持つ埋め込みドキュメントを検索したいだから私はコレクション "フォーム"を持って、私は "Form_Fields"と呼ばれるドキュメントを持っているコレクション内に埋め込まれて言うことができます。そのため、各フォームには埋め込み/関連フィールドがあります。私は、属性 "Form_Name"を持つドキュメントの埋め込みフォームフィールドをすべて探していました。 "Users"。上記の私の更新を参照してください。 – user982853

関連する問題