如何在 PHP 中打印一个 MongoDB 集合?

Posted

技术标签:

【中文标题】如何在 PHP 中打印一个 MongoDB 集合?【英文标题】:How to print_r in PHP a MongoDB Collection? 【发布时间】:2011-07-18 21:58:46 【问题描述】:

find()ing 我的结果后,如何使用 MongoDB 集合查看和“执行”操作?即:

<?php
   $cursor = $collection->find();
   json_encode($cursor);
   //OR
   print_r($cursor);
?>

等等。无论我做什么,我什么都得不到,但是如果我循环它,我可以一个一个地取出数据,我可以取出数据(当然)但问题是,我想用它做一些事情,比如对返回的数组进行编码作为一个整体到一个 JSON 对象来做 AJAX / JS 的东西。

那么,我该怎么做呢?

【问题讨论】:

【参考方案1】:

您正在尝试在 MongoCursor 上执行 print_r,而不是 PHP 数组(这不起作用。)

http://php.net/manual/en/class.mongocursor.php

您需要将光标转换为 PHP 数组 ...

<?
// Connect to Mongo and set DB and Collection
$mongo = new Mongo();
$db = $mongo->twitter;
$collection = $db->tweets;

// Return a cursor of tweets from MongoDB
$cursor = $collection->find();

// Convert cursor to an array
$array = iterator_to_array($cursor);

// Loop and print out tweets ...
foreach ($array as $value) 
   echo "<p>" . $value[text];
   echo " @ <b><i>" . $value[created_at] . "</i></b>";

?>

或者,使用 findOne() 代替它不会返回 MongoCursor ...因此,如果您只想获取一个文档并将其作为 JSON 返回到您的应用程序,您可以像这样简单地进行操作(这说明了如何做你问的 JSON 和 print_r)...

查看这些文章以获得更多帮助...

http://learnmongo.com/posts/mongodb-php-install-and-connect/

http://learnmongo.com/posts/mongodb-php-twitter-part-1/

<?php

$connection = new Mongo();
$db = $connection->test;
$collection = $db->phptest;

$obj = $collection->findOne();
echo "<h1>Hello " . $obj["hello"] . "!</h1>";

echo "<h2>Show result as an array:</h2>";
echo "<pre>";
print_r($obj);
echo "</pre>";

echo "<h2>Show result as JSON:</h2>";
echo "<pre>";
echo json_encode($obj);
echo "</pre>";

?>

【讨论】:

【参考方案2】:

标准是使用 foreach 或 while 循环遍历结果。

还有(作为 PHP 版本 > 5.1 的一部分)iterator_to_array,可以与 Mongo 游标一起使用。正如Mongo::find 上的注释,这会将所有结果加载到内存中, 这可能会超出内存限制并导致脚本崩溃 - 因此请注意预期的数据量。

$cursor = $collection->find();
$array = iterator_to_array($cursor);.

【讨论】:

这个:gist.github.com/a1cceb8d4ec8ced1fbdb——我现在是怎么做的......看起来很乱:\【参考方案3】:

使用 shell,您可以查询 Mongo,它将结果作为数组输出。

db.products.find().toArray()

上面将打印格式为数组的集合“产品”。我还没有测试过,但你可以使用 PHP 获取输出并进行打印。只是一个想法。

【讨论】:

以上是关于如何在 PHP 中打印一个 MongoDB 集合?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 MongoDB 中打印数组元素的计数以及另一个变量

PHP中的MongoDB - 如何将项目插入集合中的数组?

如何使用 Mongodb 或 Mongoose 查询并使用 javascript 打印?

如何监听 MongoDB 集合的变化?

mongodb创建集合与php扩展

PHP 和 HTML 中的 MongoDB 注入