2013-09-24 95 views
1

我有以下文件:蒙戈DB,PHP文檔中添加或更新一個字段

{ 
    "_id": ObjectId("5241f1d79b7e7aed05000000"), 
    "description": { 
    "nl": "Hallo", 
    "en": "Hello" 
    }, 
    "name": "Marc" 
} 

現在我需要更新到一個更新現有的字段或新字段添加到描述。在PHP中我使用Mongo的更新功能,下面的代碼:

$new_data = array(
    '$set' => array(
    "description" => array(
     "de" => "hallo" 
     ) 
    ) 
); 

它所做的是刪除所有其它領域,只是將「德」字段。我嘗試用$ push替換$ set(我認爲這是爲此設置的),但沒有結果$ setOnInsert也不做任何事情。

如何解決此問題,以便我可以添加新字段(如果不存在)或更新(如果存在)。

感謝

+0

也更新前加上此前的紀錄在$ NEW_DATA的描述,因爲邏輯思考你正在更新提交 –

+0

這是有道理的,但這意味着在某些情況下我需要發送eg帖子中的23個額外字段沒有更新。沒有其他辦法了? –

+0

你可以添加更多的字段,但在你的案例描述是數組,你正在用其他值替換 –

回答

1

只是讓你更新像

{$set: {"description.de": "hello"}} 

我在你的代碼猜測這將是:

$new_data = array(
    '$set' => array(
    "description.de" => "hallo" 
) 
);