doupi7619 2018-12-10 22:53
浏览 201

MongoDB批量写入更新:首先匹配部分字符串然后更新

I need to use executeBulkWrite to do the update in PHP. Before encoding in PHP, I would like to try the update in MongoDB console (V3.2).

In MongoDB console, my codes are (I would like to match the partial string then to update into the database):

    db.collection.bulkWrite([{ updateOne:{"filter" : { "file.path" : { $regex: "/12345678abcde.jpg/"}},
        "update" : { $set : {"group8.label" : "junior level" } }}}],{ writeConcern : { w : "majority", wtimeout : 100 } },{ ordered : false })

However, there is no match:"matchedCount" : 0.

In PHP, I want to code like this,

foreach($infoImage as $partialPath){print("Partial path is " . $partialPath);$bulk->update(['file.path' => preg_match("/$partialPath/")],['$set' => ['group8.label.' => $label]], ['multi' => false, 'upsert' => false]);$result = $manager->executeBulkWrite('db.collection', $bulk, $writeConcern);printf("Matched  %d document(s)
", $result->getMatchedCount());printf("Updated  %d document(s)
", $result->getModifiedCount());}

The $manager is MongoDB\Driver\Manager.

How to solve the issue? Is it correct to use $regex to match the partial string inside the update structure in bulkWrite?

  • 写回答

0条回答

    报告相同问题?

    悬赏问题

    • ¥15 安卓adb backup备份应用数据失败
    • ¥15 eclipse运行项目时遇到的问题
    • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
    • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
    • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
    • ¥50 成都蓉城足球俱乐部小程序抢票
    • ¥15 yolov7训练自己的数据集
    • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
    • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
    • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)