【问题标题】:codeigniter mongodb update bulk datacodeigniter mongodb更新批量数据
【发布时间】:2018-02-13 07:52:23
【问题描述】:

我想用批量数据更新我的数据库,因此我使用以下代码,但是当我执行以下代码时,我的数据库中的所有字段都已更改。

 public function submit_employee_edit_details($data,$id)
    {
        $m = new MongoClient();
        $db = $m->selectDB('fleet');
        $collection = new MongoCollection($db, 'employee');
        $collection->update(array('_id' =>  new MongoId($id)),array('set' => 
        array( $data)));

       return true;
     }

但是当我使用

$collection->update ( array('_id' => new MongoId($id)), array('$set' => array( 'name' => 'john' )) );

它工作正常。那么如何更新批量数据呢?

【问题讨论】:

    标签: php arrays mongodb codeigniter mongodb-query


    【解决方案1】:

    假设 $data 是一个 key->value 映射,其中包含您要更新的新值,您应该使用

    $collection->update(array('_id' =>  new MongoId($id)),array('$set' => $data));
    

    【讨论】:

    • 是 $data 是键值映射 ID:ObjectId("5a829dca8b9ed23c03000029") 名称:“akku”单元格:“0582156831”电子邮件:“asde@gmail.com”类型:“职员”这是我的数据,但是当我使用上述命令时,它会像以下_id一样更新: ObjectId("5a829dca8b9ed23c03000029") set : Array 并且数组内有更新的数据,但由于字段名称在数组内,因此在我的视图页面中出错跨度>
    • 对不起,是“$set”,而不是“set”,我修正了答案中的错字。
    • 消息:localhost:27017:修饰符对字段进行操作,但我们找到了类型数组。例如:{$mod: {: ...}} not {$set: [ { name: "akku", cell: "0582156831", email: "asde@gmail.com", type: "Driver ", emiratesid: "2018-02-01", 护照: "2018-02-02", 签证: "2018-02-03", cna: "2018-02-04", 执照: "2018-02-05" ”,daman:“2018-02-06”,防御:“2018-02-07”,gatepass:“2018-02-08”,地址:“qwsereeee”,doc:“visa.doc”}]}我上面的错误
    猜你喜欢
    • 2017-05-13
    • 1970-01-01
    • 2021-03-21
    • 1970-01-01
    • 1970-01-01
    • 2011-05-25
    • 2013-06-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多