私はPHPライブラリでMongoDBを使用しています。 PHPを使用してMongoDB内に有効なJSONドキュメントを挿入しました。 findOneを使用してドキュメントを取得しています。その結果、MongoDB \ Model \ BSONDocumentオブジェクトが取得されています。 JSON文書を簡単に元に戻すにはどうすればよいですか? inbuilt関数がありますか、BSONDocumentをJSONに変換するロジックを記述する必要がありますか?MongoDB BSONDocumentをPHPの有効なJSONに変換するには?
9
A
答えて
10
私はここで何の答えも見当たりませんでした。私は同じ問題を抱えていました。私はいくつかの研究を行い、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
}
+0
http://php.net/manual/en/function.mongodb.bson-tojson.php –
1
は、もう一つの方法は、次のようになります。
json_encode($bsonDoc->getArrayCopy());
0
私は同じ問題を抱えていたし、これは私が内部値にアクセスする方法です。これはfind
で動作します。
foreach ($result as $entry) {
echo $entry['_id'], $entry['val1'], ['val2'];
}
これは誰かを助けることを望みます。
2
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
関連する問題
- 1. 無効なjsonを有効なjsonに変換します
- 2. BSONを有効なJSONに変換
- 3. 変換有効なJSONタスク<string>
- 4. MongoDBのクエリをPHPに変換する
- 5. セントOS用PHPのjson拡張を有効にするには
- 6. データベースの結果セットをPHPで有効なjsonにする
- 7. 文字列をJSONに変換できませんでした。 JSONを有効な文字列に変換し、PHPでJSONを解析します。
- 8. 無効なネストされたjsonを有効なものに変換してリストに変更します
- 9. Javaで有効なJSON形式に文字列を変換する方法
- 10. スカバ/遊びでcasbah mongodbリストをjsonに変換するには
- 11. Nodejs Expressアプリケーション - MongoDbカーソルをJSONに変換
- 12. mongoDBのクエリをPHPに変換するには?
- 13. 変換JSON Arrayに、抽出は、私はJSONファイル有する
- 14. mongoDBサーバーのリモートアクセスを有効にする
- 15. JSONをPHPでJavaScriptに変換する
- 16. php配列をjsonに変換する
- 17. PHP(JSON)をASPコードに変換する
- 18. PHP配列をJSONに変換する
- 19. RiotGames JSON APIをPHPに変換する
- 20. JSON文字列をPHP変数に変換するには?
- 21. PHPでmongoDBのクエリを変換するには?
- 22. JSON文字列のBSONDocument
- 23. Swift 2で有効なJavascript JSONを辞書に変換するにはどうすればよいですか?
- 24. 有効なJSONまたは無効なJSONを文字列に変換するにはどうすればよいですか?
- 25. クライアント側のMongoDBデータをjsonに変換する
- 26. jsonデータをPHPの配列に変換するには?
- 27. jsonをPHPの文字列に変換するには
- 28. OADateを有効な日付時刻に変換するMicrosoft.Office.Interop.Excel
- 29. Regex - 有効なXMLタグにHTMLを変換する
- 30. 有効なジョーダ時間(@タイムスタンプ)に日付を変換するLogstash
このドライバの変更と、一般的な混乱があるようです。 [mongodb pecl extension](http://mongodb.github.io/mongo-php-driver/)を直接使用しているように見えますが、ここでは[上位レベルの抽象ライブラリ](https:// github.com/mongodb/mongo-php-library)。そのライブラリは単にJSONにシリアライズする単純なオブジェクトを生成します。したがって、使用している下位レベルのドライバは、抽象化を提供する他のライブラリによって使用されることを意図しています。 "userland"ライブラリは、常にそのソースから抽象化されたものでなければなりません。 –
findOneは、その上位レベルの抽象ライブラリの関数ですか?そうでない場合は、ObjectIdを使用してドキュメントをクエリするためにどの関数を使用すべきかを教えてください。私は[insertOne](http://mongodb.github.io/mongo-php-library/api/class-MongoDB.Collection.html#_insertOne)を使って文書を挿入しています。それを使用して挿入するのも正しいかどうかはわかりません。 – sawrubh
これはすべての上位ライブラリと下位ライブラリのメソッドです。あなたは実際にどちらをインストールしましたか?ちょうど参照用のリンクがあります。それらを使用してください。 –