mongodbデータベースからドキュメントを読み込み、PHPでクライアント側に渡しています。MongoDB(php) - 複数のプロパティの代わりに配列としてドキュメントプロパティを返す
文書には配列プロパティが含まれています。問題は、クライアント側が標準配列ではなく0
,1
という名前のプロパティを持つオブジェクトとして受け取ることです。
これは、元のデータである:要求されたよう
{
"_id" : ObjectId("573b47a1f99a8a1f9a6278a5"),
"persons" : [
{
"name" : "Moshe",
},
{
"name" : "E",
}, ...
]
}
、私はでvar_exportを添付しています:
array (
0 =>
MongoDB\Model\BSONDocument::__set_state(array(
'_id' =>
MongoDB\BSON\ObjectID::__set_state(array(
)),
'persons' =>
MongoDB\Model\BSONArray::__set_state(array(
0 =>
MongoDB\Model\BSONDocument::__set_state(array(
'name' => 'Moshe',
)),
1 =>
MongoDB\Model\BSONDocument::__set_state(array(
'name' => 'E',
)),
)),
)),
)
とのvar_dump:
array(1) {
[0]=>
object(MongoDB\Model\BSONDocument)#40 (1) {
["storage":"ArrayObject":private]=>
array(2) {
["_id"]=>
object(MongoDB\BSON\ObjectID)#11 (1) {
["oid"]=>
string(24) "573b47a1f99a8d1f986278a5"
}
["persons"]=>
object(MongoDB\Model\BSONArray)#34 (1) {
["storage":"ArrayObject":private]=>
array(2) {
[0]=>
object(MongoDB\Model\BSONDocument)#10 (1) {
["storage":"ArrayObject":private]=>
array(1) {
["name"]=>
string(5) "Moshe"
}
}
[1]=>
object(MongoDB\Model\BSONDocument)#12 (1) {
["storage":"ArrayObject":private]=>
array(1) {
["name"]=>
string(1) "E"
}
}
}
}
}
}
}
これは、PHPコードです(すべてのそれの):
それはクライアント側に表示されているecho json_encode(select());
そして結果:
{
"_id" : ObjectId("573b47a1f99a8a1f9a6278a5"),
"persons" : {
"0" : {
"name" : "Moshe",
},
"1" : {
"name" : "E",
}, ...
}
}
EDIT: LordNeo
は、それから私はこのようなjson_encodeでクライアントにオブジェクトを渡します実際にそれを解決しました。
return json_decode(json_encode(current($cursor->toArray()),true);
それは恐ろしい見えますが、それは動作します:彼の答えを読んだ後、私は次のように私の「選択」機能で最後の行を変更しました。
より良い解決策をお聞きします。
コードが不十分です – Richard
私が以前に提供しなかった唯一の行を追加しました。 – Dorad
'$ cursor-> toArray()'の 'var_dump'を追加できますか? – guessimtoolate