2011-11-10 5 views
12

मेरे पास एक एंड्रॉइड एप्लिकेशन है जो जेएसएस डेटा को PHP स्क्रिप्ट में भेजता है। PHP स्क्रिप्ट को डेटा को MongoDb में सहेजना है।सीधे JSOD12 में JSON डालें PHP

जब मैं डेटा डालता हूं, तो MongoDb इस डेटा को स्ट्रिंग के रूप में मानता है।

$ conn = new Mongo ('mongodb: //127.0.0.1: 27017');

// access database 
$db = $conn->Data; 

// access collection 
$collection = $db->Collection; 
$collection->insert($myjson) 

मैं MongoDB पीएचपी चालक यह पहले से ही एक json दस्तावेज है कि कैसे कह सकते हैं।

धन्यवाद

उत्तर

16

पीएचपी MongDB ड्राइवर आवेषण और प्रश्नों के लिए सरणियों स्वीकार करता है (यहाँ देखें: http://www.php.net/manual/en/mongo.queries.php)

तो तुम एक सरणी के लिए अपने JSON बदलना होगा।

सौभाग्य से, सामान्य रूप में यह काफी आसान है ... यहाँ कोड की एक लंबी टुकड़ा से एक टुकड़ा है (इस article देखें), एक सरणी में ट्विटर एपीआई से JSON डेटा सम्मिलित करने के लिए तो MongoDB में:

// Convert JSON to a PHP array 
$usertimeline = json_decode($usertimeline); 

// Loop array and create seperate documents for each tweet 
foreach ($usertimeline as $id => $item) { 
    $collection->insert($item); 
} 

json_decode() पर ध्यान दें जो JSON को एक PHP ऐरे में बदल देता है।

+6

कैसे आप MongoDate की तरह देशी मोंगो डेटा प्रकार डालने संभाल होगा: काम करने के लिए जस्टिन दृष्टिकोण पाने के लिए, मुझे यकीन है कि मैं एक MongoId लिए प्रत्येक आइटम के लिए _ id वस्तु परिवर्तित करना था? – karnage

0

MongoDB का उपयोग करता BSON नहीं JSON ताकि आप फिर से एनकोड करने के लिए वैसे भी जरूरत है। इसके अलावा, मुझे इस बारे में kchodorow से बात करना याद है और कच्चे इंटरफेस का खुलासा नहीं किया गया था (कम से कम आधा साल) और मुझे संदेह है कि अब यह है कि अगर आप कहीं से बीएसओएन डेटा प्राप्त करने में कामयाब होते हैं, तो आप डी से बच नहीं सकते/एनकोड।

2

यहां दूसरों के लिए एक युक्ति है जो ऐसा करना चाहते हैं, लेकिन नए डालने के बजाय रिकॉर्ड अपडेट करना चाहते हैं।

// Convert JSON to a PHP array 
$usertimeline = json_decode($usertimeline); 

// Loop array and create seperate documents for each tweet 
foreach ($usertimeline as $id => $item) { 
    $mongo_id = new MongoId($id); 
    $item->_id = $mongo_id; 
    $collection->update(array('_id' => $mongo_id), $item); 
} 
संबंधित मुद्दे