Как изменить сортировку документом MongoDB в Laravel?

Всем привет.

Устал в поисках инфы по изменению сортировки...

В общем есть документы
{
    "_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
    ]);
}
  • Вопрос задан
  • 169 просмотров
Пригласить эксперта
Ответы на вопрос 1
GrozInventor
@GrozInventor Автор вопроса
Люблю, когда сложность вопроса отмечают "Элементарно", при этом ни чего не ответив на сам вопрос ))
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы