PHPライブラリでMongoDBを使用しています。PHPを使用してMongoDB内に有効なJSONドキュメントを挿入しました。 findOne を使用してドキュメントを取得し、MongoDB \を取得しています。結果としてModel\BSONDocumentオブジェクト。JSONドキュメントを簡単に取り戻すにはどうすればよいですか?組み込み関数はありますか、それともBSONDocumentをJSONに変換するロジックを作成する必要がありますか?
ここには回答がなく、同じ問題が発生していました。調査を行ったところ、MongoDB\Model\BSONDocumentのドキュメントを作成すると、bsonSerialize()メソッドがあるようです。このメソッドは、実際にはPHP配列クラスであるstdClassオブジェクトを返します。ドキュメントによると、PHPからBSONに、次にJSONに変換できます。
これは見た目がおかしいですが、機能します。これが私の例です$ accountResultDocはMongoDB\Model\BSONDocumentタイプです。
$json = MongoDB\BSON\toJSON(MongoDB\BSON\fromPHP($accountResultDoc))
結果
{
"_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
}
別の方法は次のとおりです。
json_encode( $bsonDoc->getArrayCopy() );
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;
これを出力します:
12345
myfile
私は同じ問題を抱えていました、そしてこれは私が内部の値にアクセスする方法です。これはfind
で機能します。
foreach ($result as $entry) {
echo $entry['_id'], $entry['val1'], ['val2'];
}
これが誰かを助けることを願っています。