Необработанные выражения вводятся непосредственно в запрос.Можно было бы написать запрос в PHP, подобный этому.
$users = User::whereRaw([
'$expr' => ['$lt' => [['$strLenCP' => "$password"], 11 ]]
])->get();
Проверьте правильность результатов выполнения запроса, затем выполните следующую команду для обновления документов.
Обязательно протестируйте копию базы данных перед запуском на действующей.
foreach($users as $user) {
User::where('_id', $user['_id'])
->update(
['password' => Hash::make($user['password'])]
);
}
Или получите всех пользователей и выполните фильтрацию в памяти.
$users = User::all();
$updateUsers = [];
foreach ($users as $user) {
if(mb_strlen($user->password, "UTF-8") < 11) {
$updateUsers[] = $user;
}
}
Затем обновите отфильтрованных пользователей,
foreach($updateUsers as $user) {
$user->password = bcrypt($user->password);
$user->save();
}