2013-04-18 24 views
2

我正在使用來自PHP腳本的表單數據更新我的MongoDB數據庫,它可以將可變數量的元素更新到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記錄中元素的順序發生了變化。最後更新的元素首先出現。我該如何解決? –