Добавить значение obejct в MongoDB

У меня есть объект JSON в MongoDB. Я хочу добавить значение к этому объекту, например, в местах -> машины -> датчики. Я знаю _id для машины, для местоположения и для датчика. Какой самый эффективный способ сделать это?

    array(
"_id" => '547f2e4cb54b3a96203c9869',
"name" => Array (
"nl" => "klant1"),
"locations" => Array (
Array (
"_id" => "1",
"name" => Array (
"nl" => "location1",
),
"machines" => Array (
Array (
"_id" => "1",
"name" => Array (
"nl" => "boot1"),
"sensors" => Array (
Array (
"_id" => "1",
"log" => Array (
)
),
Array (
"_id" => "2",
"log" => Array (
)
)
)
),
Array (
"_id" => "2",
"name" => Array (
"nl" => "boot2"),
"sensors" => Array (
Array (
"_id" => "1",
"log" => Array (
)
),
Array (
"_id" => "2",
"log" => Array (
)
)
)
),
Array (
"_id" => "3",
"name" => Array (
"nl" => "boot3"),
"sensors" => Array (
Array (
"_id" => "1",
"log" => Array (
)
),
Array (
"_id" => "2",
"log" => Array (
)
)
)
)
)
)
)

3

Решение

Супер просто. Вы можете сделать findAndModify вызов. Или, если вы хотите сделать это немного больше вручную, вы можете сделать:

$collection = $mongo->your_collection;
$obj = $collection->findOne($query);
$obj = $obj['locations']['machines']['sensors'][] = $new_sensor;
$collection->save($obj);

Монго достаточно умен, чтобы идентифицировать объект, используя _id ключ, который заставляет его обрабатывать эти сохранения как обновления существующих объектов. Без этого вы будете создавать новые объекты с этим.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]