使用Laravel

时间:2018-04-23 14:32:44

标签: php mongodb laravel mongodb-query jenssegers-mongodb

我有一个MongoDB结构,如下所示:

Object_id {
    workflow {
        tree_id {
            other_ids {...}
            other_ids {...}
            other_ids {...}
            subscribers {
                subscriber_id {
                    email : value
                    }
                }
            }
        }
    }
}

可在此屏幕上清楚地看到:

My MongoDB structure

我想在name : last_name下添加另一个字段,例如email : value。我尝试使用这段代码:

Model::where('_id', '5adde78993def907b71ce503')->push(array('workflow.5ace115a93def953d254b502.subscribers.5ad09c2993def90a2c59fa59' => ['test' => 'testvalue']));

但是,这段代码不起作用。它向我显示错误说:

  

字段' workflow.5ace115a93def953d254b502.subscribers.5ad09c2993def90a2c59fa59'必须是一个数组,但在文档中是对象类型{_id:ObjectId(' 5adde78993def907b71ce503')}

使用['upsert' => true]进行更新也不起作用,因为此方法会删除我的收藏并添加数据。如何在此数组中添加内容?

2 个答案:

答案 0 :(得分:0)

您显示的结构中没有任何数组。所有都是文档或子文档。您无法对非数组对象执行数组操作。要将Subscriber_id视为数组,它应该是这样的

subscriber_id [{                     电子邮件:价值                     }]

答案 1 :(得分:0)

Model :: where('_ id','5adde78993def907b71ce503')-> push('workflow.5ace115a93def953d254b502.subscribers.5ad09c2993def90a2c59fa59'=> ['test'=>'testvalue']);

请尝试这个。