Обновление mongoDB не работает должным образом

С «Insert» меня все устраивает.

PHP - MongoDB вставляет так, как я хотел, но обновление не работает, как я планировал.

Сразу после «Вставить» документ, в котором нет полей «ip» и «время».

Поле 'ip' работает нормально - {'ip':'127.0.0.1'}

но почему-то поле массива "время" ведет себя странно.

{'time':{'realtime':'2011-01-01 12:00:00', 'mongotime': ISODate("2011-01-01T00:00:00")}}

«время» должно быть вставлено в документ и должно быть в порядке.

Но как этот массив «время», так и независимый «в реальном времени», «монготайм» вставляются в документ.

В результате я получаю

{'time':{'realtime':'2011-01-01 12:00:00', 'mongotime': ISODate("2011-01-01T00:00:00")}, 'realtime':'2011- 01-01 12:00:00', 'mongotime': ISODate("2011-01-01T00:00:00")}

Я не знаю, почему это происходит...

Это так странно.

Вот мой код:

$query = array('username'=>"$username");
$realtime = date("Y-m-d H:i:s");
$mongotime = new Mongodate(strtotime($realtime));
$set_item = array('ip'=>"$IP", 'time'=> array('realtime'=>"$realtime", 
         'mongotime'=>  $mongotime));
$db->member->update($query, array('$set' => $set_item));

Я неправильно понимаю mongoDB или он ведет себя неправильно?


person jwchang    schedule 16.08.2011    source источник
comment
Вы использовали этот сайт достаточно, чтобы знать, что вы можете форматировать код. Сделай это, пожалуйста. Просто отредактируйте вопрос, выделите части, которые являются кодом, и нажмите кнопку кода на панели инструментов.   -  person Dan Grossman    schedule 16.08.2011
comment
Я пытаюсь, но почему-то не работает отступ 4 пробела и 8 пробелов. Нвм. Теперь это работает.   -  person jwchang    schedule 16.08.2011


Ответы (1)


Ваш код должен быть в порядке.

Когда вы разрабатывали свой код, вы, вероятно, тестировали его пару раз и обновляли документ с неправильными документами модификаторов. Теперь в нем мусор.

Просто проверьте его с чистым документом.

person Karoly Horvath    schedule 16.08.2011