2011-03-19 4 views
6

Comment puis-je voir et "faire" des choses avec une collection MongoDB après find() mes résultats? À savoir:Comment imprimer en PHP une collection MongoDB?

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

etc. Peu importe ce que je fais que je reçois rien, mais si je le boucle je peux obtenir les données un par un que je peux obtenir les données sur (bien sûr), mais la question est, je vouloir faire des choses avec lui comme encoder le tableau retourné dans son ensemble à un objet JSON pour faire des trucs AJAX/JS.

Alors, comment pourrais-je faire cela?

Répondre

4

La norme est de faire une boucle sur les résultats, avec foreach, ou while.

Il y a aussi (dans le cadre des versions de PHP> 5.1), iterator_to_array, qui peut être utilisé avec les curseurs Mongo. Comme la note sur Mongo::find cela va charger tous les résultats dans la mémoire, qui pourrait dépasser les limites de mémoire et planter le script - donc soyez conscient de combien de données sont attendues.

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

Ceci: https://gist.github.com/a1cceb8d4ec8ced1fbdb - est comment je le fais maintenant ... il semble juste en désordre: \ –

4

Vous essayez de faire la print_r sur un MongoCursor, pas un tableau PHP (qui ne fonctionnera pas.)

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

Vous devrez soit convertir le curseur à un tableau 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>"; 
} 
?> 

Ou, utilisez findOne() au lieu qui ne reviendra pas un MongoCursor ... donc si vous voulez juste obtenir un document et le retourner comme JSON à votre application, vous pouvez le faire assez simplement comme si (cela montre comment faire JSON et print_r que vous avez demandé) ...

Voir ces articles pour plus d'aide ...

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>"; 

?> 
0

Utilisation du shell que vous pouvez interroger Mongo d'une manière qu'il affichera le résultat sous la forme d'un tableau.

db.products.find().toArray() 

Ce qui précède imprimera la collection "produits" sous la forme d'un tableau. Je n'ai pas testé mais vous pouvez obtenir la sortie avec PHP et faire une impression. Juste une pensée.

Questions connexes