MongoDB - PHP - Как запросить и вернуть нетронутыми объектами? - PullRequest
0 голосов
/ 21 октября 2011

Я запрашиваю базу данных MongoDB с помощью PHP, и в результате получается, что ответ документа возвращается в виде массива вложенных массивов.

Вот 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"
    }
]
}

Как я могу запросить MongoDB через PHP и сохранить объект в целости?

1 Ответ

1 голос
/ 21 октября 2011

Если я правильно понимаю, что происходит, вы видите «нетронутые объекты» в базах данных MongoDB, «фигурные скобки и все». Эти записи на самом деле не намного больше, чем стандартные ассоциативные массивы, хранящиеся в BSON .

Когда вы вставляете объект PHP в базу данных MongoDB, MongoDB фактически преобразует ваш объект PHP в своего рода ассоциативный массив, который он затем сохраняет как BSON. Вот почему, когда вы запрашиваете свой объект обратно, вы получаете только «массив массивов».

Попробуйте вызвать var_dump для полученного массива и посмотрите, содержит ли он ожидаемые вами данные. Если нет, то, скорее всего, MongoDB не сможет правильно хранить данные в вашем объекте в BSON.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...