Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/238.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MongoDB-PHP-如何查询和获取完整的对象?_Php_Mongodb_Database - Fatal编程技术网

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

MongoDB-PHP-如何查询和获取完整的对象?,php,mongodb,database,Php,Mongodb,Database,我正在用PHP查询MongoDB数据库,结果是文档响应以嵌套数组的形式返回 下面是响应的var_转储: Array ( [_id] => MongoId Object ( [$id] => 4ea06851fe90d0662900000a ) [name] => Jason A, [address] => Array ( [0] => Array ( [l

我正在用PHP查询MongoDB数据库,结果是文档响应以嵌套数组的形式返回

下面是响应的var_转储:

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并保持对象的完整性?

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

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


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

能否显示一些代码和获得的输出?谢谢您的回复,Jonathan。我已经用示例输出更新了我的问题。不过我想知道:您可以看到它区分了数组(“kids”)和对象(“kids”的每个元素),但是当我用PHP查询它时,它都是数组。无论如何,是否有必要保留“kids”仍然是一个数组,但每个“kid”都是一个标准对象?好吧,这是不可能的——正如我所说的,一旦存储在MongoDB中,所有内容都会简化为嵌套数组的结构。听起来您可能对类似ORM的原则感兴趣——ORM为您管理数据库中普通旧对象的存储/检索。