saw*_*ubh 14 php json mongodb bson mongodb-php
我正在使用MongoDB和PHP库.我使用PHP在MongoDB中插入了一个有效的JSON文档.我现在正在使用findOne检索文档,结果得到一个MongoDB\Model\BSONDocument对象.如何轻松取回我的JSON文档?是否有任何内置函数或我是否必须编写逻辑来将BSONDocument转换为JSON?
pit*_*408 13
我在这里没有看到任何答案,我遇到了同样的问题.我做了一些研究,看来当你创建一个MongoDB\Model\BSONDocument文档时,有一个bsonSerialize()方法.此方法将返回一个stdClass对象,它实际上是PHP数组类.根据文档,然后可以从PHP转换为BSON然后转换为JSON.
这看起来很疯狂,但它确实有效.这是我的示例$ accountResultDoc是MongoDB\Model\BSONDocument类型.
$json = MongoDB\BSON\toJSON(MongoDB\BSON\fromPHP($accountResultDoc))
Run Code Online (Sandbox Code Playgroud)
结果
{
"_id": {
"$oid": "56e1d8c31d41c849fb292184"
},
"accountName": "Michael's Test Company",
"accountType": "Partner",
"subsidiary_id": {
"$oid": "563c3ffbaca6f518d80303ce"
},
"salesforceId": "WERWERWEr2",
"netsuiteExternalId": "56e1d8c31d41c849fb292184",
"suspendBilling": false,
"testAccount": false,
"serviceOrder_ids": null,
"invoice_ids": null
}
Run Code Online (Sandbox Code Playgroud)
BSONDocument 对象有一个 jsonSerialize 方法。使用那个:
例子
{"_id" : 12345,
"filename" : "myfile",
"header" : {
"version" : 2,
"registry" : "test",
"serial" : 20080215,
"records" : 17806,
"startDate" : 19850701,
"endDate" : 20080214
},
}
$connect = new MongoDB\Client('mongodb://yourconnection');
$db = $connect->YourDB;
$collection = $db->YourCollection;
$test = $collection->findOne(array("_id"=>12345));
$data = $test->jsonSerialize();
echo $data->_id;
echo $data->filename;
Run Code Online (Sandbox Code Playgroud)
将输出这个:
12345
myfile
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7755 次 |
| 最近记录: |