直接从PHP插入JSON到MongoDb

hot*_*ips 15 php json mongodb

我有一个Android应用程序,它将json数据发送到PHP脚本.PHP脚本必须将数据保存到MongoDB中.

当我插入数据时,MongoDB将此数据视为字符串.

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

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

// access collection
$collection = $db->Collection;
$collection->insert($myjson)
Run Code Online (Sandbox Code Playgroud)

我怎么能对MongoDB PHP驱动程序说它已经是一个json文件?

谢谢

Jus*_*ins 18

PHP MongDB驱动程序接受插入和查询的数组(参见:http://www.php.net/manual/en/mongo.queries.php )

所以你需要将你的JSON转换为数组.

幸运的是,通常这很容易......这是一段代码片段(参见本文),将来自Twitter API的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);
}
Run Code Online (Sandbox Code Playgroud)

注意那里的json_decode()将JSON转换为PHP数组.

  • 您将如何处理插入MongoDate等本机Mongo数据类型? (8认同)

Tom*_*Tom 5

对于想要执行此操作但想要更新记录而不是插入新记录的其他人,这里有一个提示。为了让 Justin 的方法发挥作用,我必须确保将每个项目的 _id 对象转换为 MongoId:

// 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);
}
Run Code Online (Sandbox Code Playgroud)