Php Can';在mongoDB中找不到合适的标准来更新文档

Php Can';在mongoDB中找不到合适的标准来更新文档,php,mongodb,Php,Mongodb,我遵循了mongoDB中存储的模型: { "_id" : "some_table_name", "content" : [{ "id" : "1", "locname" : "KKH" }, { "id" : "2", "locname" : "Singapore National Eye Centre" }] } 我试图找到更新第二个元素(id=2)的条件,也就是添加新字符串 “新元素”:“foo” 因此,新的观点应该是: { "_id" : "some_ta

我遵循了mongoDB中存储的模型:

{
    "_id" : "some_table_name",
"content" : [{
  "id" : "1",
  "locname" : "KKH"
}, {
  "id" : "2",
  "locname" : "Singapore National Eye Centre"
}]
}
我试图找到更新第二个元素(id=2)的条件,也就是添加新字符串

“新元素”:“foo”

因此,新的观点应该是:

{
    "_id" : "some_table_name",
"content" : [{
  "id" : "1",
  "locname" : "KKH"
}, {
  "id" : "2",
 "locname" : "Singapore National Eye Centre"
  "new_element" : "foo" 
}]
}
表单PHP

当我尝试按id查找第二个节点时,我使用:

$array = $collection_bios2->findOne(
                array("_id" => "some_table_name", "content.id" => "2"),
                array("_id" => 0, "content.$" => 1)
        );
但当我尝试更新它时,新节点在
content
下进入:

$newdata = array('$set' => array("new_element" => "foo"));
$collection_bios2->update(
                         array("_id" => "some_table_name", "content.id" => "2"),                      
                         $newdata
                         );
我得到:

{
    "_id" : "some_table_name",
"content" : [{
  "id" : "1",
  "locname" : "KKH"
}, {
  "id" : "2",
  "locname" : "Singapore National Eye Centre"
}],
"new_element" : "foo"
}
我的实现有什么问题

求求你,救命


Maxim

您需要在此处使用位置运算符:

array('$set'=>array('content.$.new_element':'foo'))

您可以在此处阅读更多信息:

您需要像这样使用位置运算符:
array(“$set”=>array('content.$.new\u element':'foo'))
太好了!请把它贴在答题纸上,让我投票