【问题标题】:Update nested child elements with jenssegers/laravel-mongodb使用 jenssegers/laravel-mongodb 更新嵌套的子元素
【发布时间】:2023-02-21 15:19:02
【问题描述】:

我有一个文档,其中包含像这样的项目的子元素

"bar" : "d bar",
"items" : [ 
        {       
            "message" : "one",
            "display" : "true",
            "type" : "text"     
        } 
        {       
            "message" : "one2",
            "display" : "true",
            "type" : "text2"     
        }
        {       
            "message" : "one2",
            "display" : "false",
            "type" : "text3"     
        }
]

我想将数组中“one2”的字段更新为“one22”。我正在写这个命令,但它只更新第一个值。

Bars::where('bar', 'd bar')
    ->where('items.message', 'one2')
    ->update(['items.$.message' => 'one22']);

【问题讨论】:

    标签: laravel mongodb laravel-mongodb


    【解决方案1】:

    有点晚了,但也许答案会对其他人有所帮助。

    如果您稍微更改查询,它应该可以工作:

    Bars::where('bar', 'd bar')
        ->where('items.message', 'one2')
        ->update(['items.$[].message' => 'one22']);
    

    来自 MongoDB 文档:

    • $作为占位符更新第一个符合查询条件的元素。
    • $[]充当占位符,为匹配查询条件的文档更新数组中的所有元素。

    【讨论】:

      猜你喜欢
      • 2018-12-25
      • 2018-01-16
      • 2020-01-24
      • 2022-01-22
      • 1970-01-01
      • 2020-03-16
      • 1970-01-01
      • 2020-09-15
      • 1970-01-01
      相关资源
      最近更新 更多