2011-03-19 15 views
6

find() के बाद मेरे परिणाम में मोंगोडीबी संग्रह के साथ चीजों को मैं कैसे देख सकता हूं और "कर सकता हूं"? अर्थात्:PHP में एक MongoDB संग्रह print_r कैसे करें?

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

आदि कोई फर्क नहीं पड़ता कि मैं मैं कुछ भी नहीं मिलता है, लेकिन अगर मैं पाश यह मैं एक के बाद एक बाहर डेटा प्राप्त कर सकते हैं मैं डेटा बाहर निकल सकते हैं (बेशक), लेकिन मुद्दा यह है कि क्या करना है, मैं इसके साथ चीजें करना चाहते हैं जैसे AJAX/JS सामान करने के लिए पूरी तरह से एक JSON ऑब्जेक्ट में लौटाए गए सरणी को एन्कोड करना।

तो, मैं यह कैसे कर सकता हूं?

उत्तर

4

मानक भविष्यवाणी, या समय के साथ परिणामों पर लूप करना मानक है।

भी (PHP संस्करण> 5.1 के हिस्से के रूप में), iterator_to_array है, जिसका उपयोग मोंगो कर्सर के साथ किया जा सकता है। Mongo::find पर नोट के रूप में यह सभी परिणामों को स्मृति, में लोड करेगा जो स्मृति सीमा से अधिक हो सकता है और स्क्रिप्ट को क्रैश कर सकता है - इसलिए इस बात से अवगत रहें कि डेटा कितना अपेक्षित है।

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

यह: https://gist.github.com/a1cceb8d4ec8ced1fbdb - अब मैं इसे कैसे कर रहा हूं ... यह सिर्फ गन्दा लगता है: \ –

4

आप, नहीं एक PHP सरणी एक MongoCursor पर print_r करने के लिए कोशिश कर रहे हैं (जो काम नहीं करेगा।)

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

?> 
0

आप एक तरह से मोंगो क्वेरी कर सकता है खोल का उपयोग करना है कि यह एक सरणी के रूप में उत्पादन परिणाम देगा।

db.products.find().toArray() 

उपरोक्त संग्रह "उत्पादों" को एक सरणी के रूप में मुद्रित करेगा। मैंने परीक्षण नहीं किया है लेकिन आप PHP के साथ आउटपुट प्राप्त करने और प्रिंट करने में सक्षम हो सकते हैं। सिर्फ एक विचार।

संबंधित मुद्दे