Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从php MongoCursor返回JSON数据_Php_Mongodb - Fatal编程技术网

如何从php MongoCursor返回JSON数据

如何从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

我正在使用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对象都应该正确实现它们的
\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"
    }
]