2013-09-24 149 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" 
) 
);