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")

但有几件事正在发生:

  • 该值变为a,sub document即它被花括号括起来
  • ObjectId正在被取代"$id"

我正在使用 MongoDB,通过 jQuery 的getJSON()方法通过 PHP 文件访问。

gotcha's发生这种情况时我需要注意什么吗?

任何众所周知的“行业知识”提示可能对 MongoDB 新手有所帮助或进一步解释正在发生的事情?

4

1 回答 1

1

objectId 没有被替换,而只是在您调用时序列化为字符串形式json_encode

它的属性被取出,放在字符串化的 JSON 中并通过线路发送,然后在 JQuery 中,库将字符串化的 JSON 解析为您看到的对象。

没有数据丢失。

我能想到的唯一问题是构造函数MongoId实际上并没有把这个对象带回去,它只假设一个十六进制的 ObjectId(即5476854783473474578548http://www.php.net/manual/en/mongoid.construct.php

于 2013-09-06T11:41:18.443 回答