如何从php MongoCursor返回JSON数据
我正在使用PHP连接MongoDB。我的代码如下如何从php MongoCursor返回JSON数据,php,mongodb,Php,Mongodb,我正在使用PHP连接MongoDB。我的代码如下 // connect $m = new MongoClient($con_string); // connect to a remote host at a given port $db = $m->main; $customers = $db->customer->find(); 我想将$customers集合作为json文档返回到我的HTML中。我怎样才能做到这一点?您可以通过两种方式做到: echo json_enco
// connect
$m = new MongoClient($con_string); // connect to a remote host at a given port
$db = $m->main;
$customers = $db->customer->find();
我想将$customers集合作为json文档返回到我的HTML中。我怎样才能做到这一点?您可以通过两种方式做到:
echo json_encode(iterator_to_array($customers));
或者您可以手动滚动浏览:
foreach($customers as $k => $row){
echo json_encode($row);
}
每个MongoDB对象都应该正确实现它们的
\uuu-toString()
方法,以返回值的表示形式。这也会起作用。您还可以自定义json
$arr = array();
foreach($customers as $c)
{
$temp = array("name" => $c["name"], "phone" => $c["phone"],
"address" => $c["address"]);
array_push($arr, $temp);
}
echo json_encode($arr);
其他答案也可以,但很高兴知道生成的JSON将具有以下形式(在本例中,我为您的客户使用了一个假设的“name”字段): 因此,如果您不希望对象
\u id
成为每个结果对象的键,您可以将false
参数添加到iterator\u to\u array
。
您的代码是:
echo json_encode(iterator_to_array($customers, false), true);
这将创建与相同的结果
$result = Array();
foreach ($customers as $entry) {
array_push($result, $entry);
}
echo json_encode($result, true);
这是一个JSON对象数组
[
{
"_id": {
"$id": "5587d2c3cd8348455b26feab"
},
"name": "Robert"
},
{
"_id": {
"$id": "5587d2c3cd8348455b26feac"
},
"name": "John"
}
]
foreach($k=>$row){$newa[]=json_encode($row);}
您可能需要首先将对象类型转换为纯字符串,尽管与MongoId
类似,此解决方案更好,因为它在json中添加了逗号+1@ianaz从集合中分隔多个值的逗号。@Jack不明白,它的作用与迭代器对游标的作用完全相同,它形成一个所有行的数组,json_对其进行编码
[
{
"_id": {
"$id": "5587d2c3cd8348455b26feab"
},
"name": "Robert"
},
{
"_id": {
"$id": "5587d2c3cd8348455b26feac"
},
"name": "John"
}
]