1

PHP

$query = $myCollection->findOne(array("field2.sf2" => "value two"));
echo json_encode($query);

返された JSON オブジェクト

{"_id":{"$id":"5476854783473474578548"},"field1":"value one","field2":{"sf1":["av1","av2","av3"],"sf2":"value two"},"field3":"value three"}

何が起きているか:

"_id":{"$id":"5476854783473474578548"}

"_id"ドキュメントのキーと値の表現であることがわかります。

"_id": ObjectId("5476854783473474578548")

しかし、いくつかのことが起こっています:

  • 値は、sub documentつまり中括弧で囲まれます。
  • ObjectIdに置き換えられています"$id"

jQueryのgetJSON()メソッドを介して、PHPファイルからアクセスされるMongoDBを使用しています。

gotcha'sこれが起こって気をつけなければならないことはありますか?

MongoDBの初心者に役立つ、または何が起こっているのかをさらに説明する、一般的に知られている「業界知識」のヒントはありますか?

4

1 に答える 1

1

objectId は置き換えられず、呼び出し時に文字列形式にシリアル化されるだけですjson_encode

そのプロパティが取り出され、文字列化された JSON 内に配置され、ワイヤ経由で送信されます。JQuery では、ライブラリがその文字列化された JSON を解析して、表示されるオブジェクトに変換します。

データは失われていません。

私が考えることができる唯一の落とし穴は、コンストラクターがMongoId実際にこのオブジェクトを取り戻さないことです。16 進数の ObjectId (つまり5476854783473474578548) http://www.php.net/manual/en/mongoid.construct.phpのみを想定しています。

于 2013-09-06T11:41:18.443 に答える