【问题标题】:Understanding the "_id" key in JSON results accessed from a PHP file.了解从 PHP 文件访问的 JSON 结果中的“_id”键。
【发布时间】:2013-09-06 19:41:18
【问题描述】:

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,通过 jQuery 的 getJSON() 方法通过 PHP 文件访问。

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

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

【问题讨论】:

    标签: php mongodb getjson


    【解决方案1】:

    当您调用json_encode 时,objectId 不会被替换,而只是序列化为字符串形式。

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

    没有数据丢失。

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

    【讨论】:

    • 正是我希望的答案类型。谢谢你。可以在 3 分钟内接受。
    猜你喜欢
    • 2022-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多