0

保存されたドキュメントのサブドキュメントから 1 つの値を取得しようとしています。サンプルドキュメントは次のようになり、値「doc2」を取得しようとしています:

{
"_id" : ObjectId("52060cae8b080ed4170063d3"),
"form_id" : "5204c6dca0875b6a1545f436",
"update" : false,
"values" : [{
  "5204c71a8b080e6c190000bb" : "doc2"
}, {
  "5204c7638b080e6c19006b06" : "that one too"
}, {
  "form_id" : "5204c6dca0875b6a1545f436"
}, {
  "btn_submit" : "Save"
}]
}

これまでのところ、私のコードは次のようになります。

try {
   $connection = new Mongo();
   $database = $connection->selectDB('forms');
   $collection = $database->selectCollection('instance');
} catch(MongoConnectionException $e) {
 die("Failed to connect to database ".$e->getMessage());
}
$value = $collection->findOne(array('_id' =>new MongoId($instid)),array('values.'.$fid));   

$instid が渡され、ドキュメントの form_id になります。そして $fid が渡され、ドキュメントの値配列のキーです

そして私はこれを得ています:

{ ["_id"]=> object(MongoId)#15 (1)
{ ["$id"]=> "52060cae8b080ed4170063d3" } 
 ["values"]=> 
 { [0]=> { ["5204c71a8b080e6c190000bb"]=> "doc2" }
 [1]=> array(0) { } 
[2]=> array(0) { } 
[3]=> array(0) { }
} }

ご協力いただきありがとうございます。

4

1 に答える 1

0

多次元配列の形式でデータを取得しているため、使用する必要があります

print_r($value['values']['0']);

これは戻ります

 Array ( [5204c71a8b080e6c190000bb] => doc2 )

doc2 のみをエコーアウトしたい場合は、 foreach ステートメントを使用できます

foreach($value['values']['0'] as $x)
{
    echo $x;

}
于 2013-08-11T22:04:48.723 に答える