0

我正在尝试从存储文档的子文档中获取一个值。示例文档如下所示,我正在尝试获取值“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被传入,是文档中values数组中的key

我得到了这个:

{ ["_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 回答