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?