如何在PHP中打印__ MongoDB集合?

Osc*_*son 6 javascript php database ajax mongodb

在结果之后如何查看和"处理"MongoDB集合的内容find()?即:

<?php
   $cursor = $collection->find();
   json_encode($cursor);
   //OR
   print_r($cursor);
?>
Run Code Online (Sandbox Code Playgroud)

无论我做什么,我什么也得不到,但如果我循环它我可以逐个获取数据我可以得到数据(当然)但问题是,我想用它来做像编码一样将数组作为一个整体返回给JSON对象以执行AJAX/JS.

那么,我怎么能这样做?

Jus*_*ins 5

您正在尝试在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>";
}
?>
Run Code Online (Sandbox Code Playgroud)

或者,使用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>";

?>
Run Code Online (Sandbox Code Playgroud)


Ali*_*man 4

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

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

$cursor = $collection->find();
$array = iterator_to_array($cursor);.
Run Code Online (Sandbox Code Playgroud)