MongoDB - PHP - 如何查询和获取完整的对象?

时间:2011-10-20 22:44:00

标签: php mongodb database

我正在使用PHP查询MongoDB数据库,结果是文档响应作为嵌套数组的数组返回。

这是响应的var_dump:

Array
(
[_id] => MongoId Object
    (
        [$id] => 4ea06851fe90d0662900000a
    )
[name] => Jason A,
[address] => Array
    (
        [0] => Array
            (
                [line1] => 123 Main St
                [city] => Chicago
                [zip] => 60611
                [longitude] => -81.59
                [county] => Cook
                [state] => IL
                [latitude] => 28.32
            )

    )
[kids] => Array
    (
        [0] => Array
            (
                [name] => Child One
                [age] => 12
            )
        [1] => Array
            (
                [name] => Child Two
                [age] => 4
            )
    )
)

当我通过命令控制台查询MongoDB时,我可以看到文档存储时对象完整,大括号和所有:

{
"_id" : ObjectId("4ea06851fe90d0662900000a"),
"name" : "Jason A",
"address" : {
    "line1":"123 Main St"
    "city" : "Chicago",
    "zip" : "60611",
    "country" : "US",
    "longitude" : -81.59,
    "state" : "IL",
    "latitude" : 28.32
},
"kids" : [
    {
        "name" : "Child One",
        "age" : 12
    },
    {
        "name" : "Child Two",
        "age" : "4"
    }
]
}

如何通过PHP查询MongoDB并保持对象完好无损?

1 个答案:

答案 0 :(得分:1)

如果我理解正确发生的事情,你会在MongoDB数据库中看到“完整的对象”,“大括号和所有”。这些记录实际上并不比存储在BSON中的标准关联数组多。

当您将PHP对象插入MongoDB数据库时,MongoDB实际上将您的PHP对象转换为一种关联数组,然后将其存储为BSON。这就是为什么当您查询对象时,您只会收到“数组数组”。

尝试在您获得的阵列上调用var_dump,看看它是否包含您期望的数据。如果没有,很可能MongoDB无法将数据正确存储在BSON中的对象中。