2013-04-18 2 views
2

Я обновляю свою базу данных MongoDB, используя данные формы, поступающие из скрипта PHP, и может содержать переменное количество элементов для обновления в MongoDB. Для целей тестирования, я попробовал ..MongoDB update() фактически заменяет всю запись в моем коде

$update = '"continent"=>"Asia"'; // one element to be updated, would be multiple eventually 

$tracking->sessions->update(array("ts"=>$timestamp,"fb_id"=>$fb_id),array($update)); 

Я не получаю ошибку, когда я делаю это, однако данные не обновляются в базе данных, запись на самом деле ЗАМЕНИТЬ с этим:

{ "_id" : ObjectId("517048f87a088a7e65000003"), "0" : "'continent'=>'Asia'" } 

Оригинал записи:

{ "_id" : ObjectId("517048f87a088a7e65000003"), "fb_id" : "123456", "ts" : "1366316915", "continent" : "North America", "city" : "New York" } 

Не уверен, что я делаю неправильно. Как это исправить?

ответ

8

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

Если вы только намеревались установить определенные поля, то вам нужно указать use the $set operator.

+0

Хорошо поймать! :) Я добавил оператор $ set, однако данные не обновляются в базе данных. Пожалуйста, найдите мой обновленный код. –

+0

Извините, у меня была глупая опечатка в моем коде. Это мое плохое! –

+0

Изменен порядок элементов в записи MongoDB. Последний обновленный элемент появляется первым. Как это исправить? –

Смежные вопросы