Всем привет.
Устал в поисках инфы по изменению сортировки...
В общем есть документы
{
"_id": ObjectId("1974a8d27745ffb9644da8e1"),
"sort": 0
}
{
"_id": ObjectId("2974a8d27745ffb9644da8e2"),
"sort": 1
}
{
"_id": ObjectId("3974a8d27745ffb9644da8e3"),
"sort": 2
}
Теперь мне нужно изменить порядок номеров "sort"
Получаю массив id в нужном порядке
$ids = [
"2974a8d27745ffb9644da8e2",
"3974a8d27745ffb9644da8e3",
"1974a8d27745ffb9644da8e1"
]
И сохранение нового порядка должен выглядеть как-то так
foreach ($ids as $id) {
$each[] = ['_id' => new \MongoDB\BSON\ObjectID($id)];
}
$result = Modules::update([
'sort' => [
'$each' => $each,
'$sort' => 1
]
]);
Но это не работает
Конечно можно перебрать все документы и обновить каждый по отдельности, но это может занять больше времени при обработке, чем надо.
foreach ($ids as $sort=>$id) {
Modules::where([
'_id' => $id
])->update([
'sort' => $sort
]);
}