2011-11-10 11 views
12

jsonデータをPHPスクリプトに送るAndroidアプリケーションがあります。 PHPスクリプトはMongoDbにデータを保存する必要があります。PHPから直接JSONをMongoDbに挿入

データを挿入すると、MongoDbはこのデータを文字列として扱います。

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

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

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

私はMongoDb PHPドライバに、既にjsonドキュメントであると言うことができます。

おかげ

答えて

16

PHP MongDBドライバーは挿入とクエリのための配列を受け入れます(ここを参照してください:http://www.php.net/manual/en/mongo.queries.php)を

ですから、配列にあなたのJSONに変換する必要があります。

幸いにも、一般的に、これはここに...非常に簡単ですが、その後のMongoDBに、配列にTwitterのAPIからJSONデータを挿入するコードの長い部分(このarticleを参照)からの抜粋です:

// 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

:仕事にジャスティンのアプローチを得るために、私は私がMongoIdに各項目の_idオブジェクトを変換することを確認していましたか? – karnage

0

あなたはとにかく再エンコードする必要があるので、MongoDBはBSONないJSONを使用しています。また、これについてkchodorowと話したことは覚えています。生のインターフェイスは公開されていませんでした(少なくとも半年ありました)。だからどこかからBSONデータを取得しても、 /エンコード。

2

これをやりたいが、新しいものを挿入するのではなく、レコードを更新したい人のためのヒントです。あなたはMongoDateのようなネイティブMongoのデータ型を挿入扱うだろうか

// 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); 
} 
関連する問題