Во время первой записи в документ получается вот такая структура:
{
"_id": "ObjectId("53d8ae568c98c83410000003")",
"city": "nsk",
"date": "ISODate("2014-07-29T20: 00: 00.0Z")",
"forecast_now": {
"time": 1406709334,
"current_temp_c": "21,2",
"cloud_title": "ясная погода",
"precip_title": "без осадков"
},
"forecast_archieve": [
]
}
Суть в том, что в следующий раз мне нужно поменять содержимое forecast_now, а то что было в нём отправить в архвив. Т.е в идеале я хотел получить что - то вроде такого:
{
"_id": "ObjectId("53d8ae568c98c83410000003")",
"city": "nsk",
"date": "ISODate("2014-07-29T20: 00: 00.0Z")",
"forecast_now": {
"time": 1406709479,
"current_temp_c": "21,2",
"cloud_title": "ясная погода",
"precip_title": "без осадков"
},
"forecast_archieve": [
{
"time": 1406709334,
"current_temp_c": "21,2",
"cloud_title": "ясная погода",
"precip_title": "без осадков"
}
]
}
Но вместо этого получаю вот такую структуру:
{
"_id": "ObjectId("53d8ae568c98c83410000003")",
"city": "nsk",
"date": "ISODate("2014-07-29T20: 00: 00.0Z")",
"forecast_archieve": {
"0": {
"time": 1406709334,
"current_temp_c": "21,2",
"cloud_title": "ясная погода",
"precip_title": "без осадков"
}
},
"forecast_now": {
"time": 1406709479,
"current_temp_c": "21,2",
"cloud_title": "ясная погода",
"precip_title": "без осадков"
}
}
Код обновления выглядит следующим образом:
$tmp_arr = $result["forecast_now"];
if (!is_null($tmp_arr)){
$new_doc = array ('$set' => array("forecast_now" => $arr), '$push' => array("forecast_archieve" => $tmp_arr));
$collection->update($result, $new_doc);
}
Подскажите как это исправить, заранее спасибо