Мне нужно использовать executeBulkWrite, чтобы сделать обновление в PHP. Перед кодированием в PHP, я хотел бы попробовать обновление в консоли MongoDB (V3.2).
В консоли MongoDB мои коды (я хотел бы сопоставить частичную строку, а затем обновить в базе данных):
db.collection.bulkWrite([{ updateOne:{"filter" : { "file.path" : { $regex: "/12345678abcde.jpg/"}},
"update" : { $set : {"group8.label" : "junior level" } }}}],{ writeConcern : { w : "majority", wtimeout : 100 } },{ ordered : false })
Однако совпадений нет: «matchedCount»: 0.
В PHP я хочу, чтобы код, как это,
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)\n", $result->getMatchedCount());printf("Updated %d document(s)\n", $result->getModifiedCount());}
$ Manager это MongoDB \ Driver \ Manager.
Как решить проблему? Правильно ли использовать $ regex для сопоставления частичной строки внутри структуры обновления в bulkWrite?
Задача ещё не решена.
Других решений пока нет …