我在MongoDB中有json对象。我想为这个对象添加一个值,例如在locations -> ->传感器中。我知道机器、位置和传感器的_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 (
)
)
)
)
)
)
)发布于 2014-12-16 00:27:08
超容易的。您可以执行findAndModify调用。或者,如果您想手动做得更多,可以这样做:
$collection = $mongo->your_collection;
$obj = $collection->findOne($query);
$obj = $obj['locations']['machines']['sensors'][] = $new_sensor;
$collection->save($obj);Mongo非常聪明,可以使用_id键识别对象,这使得它将这些保存视为对现有对象的更新。如果没有它,您将创建新的对象。
https://stackoverflow.com/questions/27419661
复制相似问题