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"}
我可以看到它是Document的"_id"
键和值的表示,即:
"_id": ObjectId("5476854783473474578548")
但是有一些事情正在发生:
sub document
,即它以花括号ObjectId
正在被"$id"
我正在使用MongoDB,通过PHP文件访问,通过jQuery的getJSON()
方法。
有没有gotcha's
我需要注意这件事吗?
任何众所周知的“行业知识”提示可能对MongoDB新手有所帮助或进一步解释发生了什么?
答案 0 :(得分:1)
在调用json_encode
时,objectId没有被替换,只是序列化为字符串形式。
它的属性被取出,置于字符串化的JSON中并通过线路发送,然后在JQuery中,库将该字符串化JSON解析为您看到的对象。
没有数据丢失。
我能想到的唯一问题是MongoId
的构造函数实际上没有把这个对象重新插入,它只假设一个十六进制的ObjectId(即5476854783473474578548
)http://www.php.net/manual/en/mongoid.construct.php