Почему во время обновления документа в mongoDB пропадает массив?

Во время первой записи в документ получается вот такая структура:
{
   "_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);
}

Подскажите как это исправить, заранее спасибо
  • Вопрос задан
  • 2434 просмотра
Пригласить эксперта
Ответы на вопрос 1
@kliss
Решение простое: не использовать похапэ и его дуализм массив/хеш.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы