php - mongodb:通过数组更新嵌套文档?

标签 php arrays mongodb nested upsert

我有一个嵌套很深的 PHP 数组,我将其保存为 Mongo 中的文档,并以这种结构结束:

{ 
"_id" : "...", 
"categ1" : { 
    "aaa" : 112.6736, 
    "bbb" : 83.9137, 
    "ccc" : 80.3322,
     .....
    }, 
"categ2" : { 
    "xxx" : 1, 
    "yyy" : 22, 
    "zzz" : 7,
    "subcateg" : {
         "sub1" : 1,
         "sub2" : 22
         }
    } 
}

现在,我有另一个具有类似结构的数组,我想通过修饰符数组的值来增加记录的值:

$modifier=array(
    'categ1' => array(
          'aaa' => 3,
          'bbb' => -1,
          'mmm' => 11
        ),
     'categ2' => array(
           'yyy' => -2,
           'subcateg' => array(
                 'sub1' => -1
            )
        )
     );

如何通过 $modifier 的值增加文档中的值一次在单个查询中,并且不加载整个文档 ?

我在网上四处寻找,但找不到任何相关信息。 另外,我是 Mongo 的新手。谢谢

最佳答案

你可以让你的 $modifier 数组看起来像这样:

$modifier = array(
  'categ1.aaa' => 3,
  'categ1.bbb' => -1,
  'categ1.mmm' => 11,
  'categ2.yyy' => -2,
  'categ2.subcateg.sub1' => -1
)

Link for how to get that.

那么你应该能够简单地使用:

$col->update(
    array("_id" => "..."),
    array('$inc' => $modifier),
    array("upsert" => true)
);

关于php - mongodb:通过数组更新嵌套文档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27606507/

相关文章:

php - 虽然 php 运算符与 mysql Truncate 不起作用

php - 如何在 PocketMine 插件中创建具有本地化描述的命令?

php - 点燃的数据表为自动增量字段添加列

javascript - 使用两个数组特定数据和值创建新数组

java - 如何在 mongodb 中使用 where 条件从集合中获取不同的值?

javascript - 从 API 中提取信息并将其添加到数据库(MEAN 堆栈)

javascript - 使用nodejs mongodb驱动程序和async.js在mongodb中插入多条记录

php - 使用常规登录密码保护 Magento Storeview

c - 在 C 中创建动态数组(指针)/调整其大小时出现问题

arrays - 如何在 PowerShell 中将 HashSet 转换为 ArrayList?