【问题标题】:Laravel - Jenssegers MongoDB nested array update not workingLaravel - Jenssegers MongoDB 嵌套数组更新不起作用
【发布时间】:2020-01-24 05:15:50
【问题描述】:

有人可以指出我的代码有什么问题吗? 我正在尝试通过 Laravel Jenssegers 更新 MongoDB 中的嵌套数组。这是我的代码

 $update_status = Journal::where('_id', "5cd10b325586e9122761f675" )
    ->update(
        [], 
        [ '$set' =>
            [
                "workflow.$[i].stages.$[j].stage_code" => "edit",
                "workflow.$[i].stages.$[j].stage_name" => "Editing"
            ]
        ],
        [ 'arrayFilters' => [
                [ "i.basic_details.wfCode" => 'wf1' ],
                [ "j.stage_id" => "wf1_2" ]
            ]
        ]
    );

而我的Journal 收藏是:

{
    "_id" : ObjectId("5cd10b325586e9122761f675"),
    "workflow" : [ 
        {
            "basic_details" : {
                "wfCode" : "wf1"
            },
            "stages" : [ 
                {
                    "stage_id" : "wf1_1",
                    "stage_code" : "submission",
                    "stage_name" : "Submission",
                    "button_label" : "submit"
                }, 
                {
                    "stage_id" : "wf1_2",
                    "stage_code" : "s2",
                    "stage_name" : "S2",
                    "button_label" : "label2"
                }
            ]
        }
    ]
}

执行后,我将$update_status 设为 1,但在查看集合时,它保持不变。

【问题讨论】:

  • 你用的是哪个版本的mongodb?
  • 由于嵌套数组过滤器仅支持 3.6 以上,我使用的是 MongoDB v 4 @AnoopSankar

标签: laravel mongodb jenssegers-mongodb


【解决方案1】:

请检查此查询,我认为这应该可行...

$articleId = new ObjectID("5cd10b325586e9122761f675");
$result = Journal::raw(function ($collection) use ($articleId) {
return $collection->updateOne(
    array ('_id' => $articleId), 
    array ('$set' => 
        array(
            'jnl_workflow.$[i].wf_stages.$[j].wf_stage_code' => "edit",
            'jnl_workflow.$[i].wf_stages.$[j].wf_stage_name' => "Editing" 
        )
    ), 
    array( 'arrayFilters' => [ array ('i.wf_basic_details.wfCode' => 'wf1'), array('j.wf_stage_id' => "wf1_2" ) ] ) 
)

});

【讨论】:

    猜你喜欢
    • 2018-12-25
    • 2023-02-21
    • 2016-06-09
    • 2016-07-26
    • 2017-05-21
    • 2018-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多