我正在使用 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_encode(iterator_to_array($customers));
或者您可以手动滚动浏览它:
foreach($customers as $k => $row){
echo json_encode($row);
}
每个 MongoDB 对象都应该__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 将具有以下形式(在此示例中,我为您的客户使用假设的“名称”字段):
{
"5587d2c3cd8348455b26feab": {
"_id": {
"$id": "5587d2c3cd8348455b26feab"
},
"name": "Robert"
},
"5587d2c3cd8348455b26feac": {
"_id": {
"$id": "5587d2c3cd8348455b26feac"
},
"name": "John"
}
}
因此,如果您不希望 Object_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"
}
]