Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongo DB、PHP在文档中添加或更新字段_Php_Mongodb - Fatal编程技术网

Mongo DB、PHP在文档中添加或更新字段

Mongo DB、PHP在文档中添加或更新字段,php,mongodb,Php,Mongodb,我有以下文件: { "_id": ObjectId("5241f1d79b7e7aed05000000"), "description": { "nl": "Hallo", "en": "Hello" }, "name": "Marc" } 现在我需要更新以更新一个现有字段或向描述中添加新字段。在php中,我使用Mongo的更新函数和以下代码: $new_data = array( '$set' => array( "descr

我有以下文件:

{
   "_id": ObjectId("5241f1d79b7e7aed05000000"),
   "description": {
     "nl": "Hallo",
     "en": "Hello"
    },
  "name": "Marc"
}
现在我需要更新以更新一个现有字段或向描述中添加新字段。在php中,我使用Mongo的更新函数和以下代码:

$new_data = array(
    '$set' => array(
    "description" => array(
         "de" => "hallo"
       )
    )
);
它所做的是删除所有其他字段,只插入“de”字段。我尝试用$push替换$set(我认为这是为这个而做的),但是没有结果,$setOnInsert也没有做任何事情

如何解决此问题,以便添加新字段(如果不存在)或更新(如果存在)


谢谢

让你的更新像

{$set: {"description.de": "hello"}}
我猜在你的代码中应该是:

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

让你的更新像

{$set: {"description.de": "hello"}}
我猜在你的代码中应该是:

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

在更新之前,还要在描述中添加$new_data中的先前记录,因为从逻辑上来说,您正在更新文件数据,这有一定的意义,但这意味着在某些情况下,我需要在未更新的帖子中发送23个额外字段。没有其他方法?您可以添加更多字段,但在您的案例中,说明是数组,在更新之前,您将用其他值替换。此外,还可以在说明中添加$new_data中的先前记录,因为从逻辑上讲,您正在更新有意义的文件数据,但这意味着在某些情况下,我需要在帖子中发送23个未更新的额外字段。没有其他方法吗?您可以添加更多字段,但在您的示例中,描述是数组,您将用其他值替换