MongoDB只需合并两个未知的文档



在PHP Mongodb中是否有一种方法可以在现有文档中写入对象,并且只覆盖或添加对象中包含的值。

对象结构我不知道。

这是一个示例:

现有文档:

{
"package": {
"parameter": "value",
"one": "two"
}
}

php对象或数组:

$obj[package][parameter] = "value2" 
$obj[package][new] = "test"`

结果可能是

{
"package": {
"parameter": "value2",
"one": "two",
"new": "test"
}
}

我需要类似array_merge((的东西

我尝试了$merge aggerator,但它似乎不起作用。

未知修饰符:$merge。需要指定为数组的有效更新修饰符或管道样式更新

$merge用于将文档插入/更新到集合,类似于SQL中的UPSERT命令。看看$mergeObjects。将其与$replaceWith(或只是别名的$replaceRoot(结合使用

会像一样

{ $replaceWith: { $mergeObjects: [ "$$ROOT", {"new" : "test"} ] } }

$$ROOT是现有对象。如果现有对象的任何字段与新对象的名称相同,则它将被新的字段值覆盖。如果您喜欢现有字段,请翻转数组中的参数。

您提供的示例数据不是有效的JSON,因此我无法提供完整的解决方案。

最新更新