我使用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。我怎么能这样做?
答案 0 :(得分:18)
你可以这两种方式:
echo json_encode(iterator_to_array($customers));
或者您可以手动滚动它:
foreach($customers as $k => $row){
echo json_encode($row);
}
每个MongoDB对象都应该正确实现__toString()
方法,以恢复值的表示。
答案 1 :(得分:8)
这也行。你也可以自定义你的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);
答案 2 :(得分:4)
其他答案有效,但很高兴知道生成的JSON将具有以下形式(在此示例中,我为您的客户使用假设的"名称"字段):
{
"5587d2c3cd8348455b26feab": {
"_id": {
"$id": "5587d2c3cd8348455b26feab"
},
"name": "Robert"
},
"5587d2c3cd8348455b26feac": {
"_id": {
"$id": "5587d2c3cd8348455b26feac"
},
"name": "John"
}
}
因此,如果您不希望对象_id
成为每个结果对象的关键字,则可以向false
添加iterator_to_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"
}
]