Задать вопрос

Как изменить сортировку документом 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
    ]);
}
  • Вопрос задан
  • 181 просмотр
Подписаться 2 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Loftschool
    Комплексное обучение PHP
    6 недель
    Далее
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Skillbox
    Профессия PHP-разработчик с нуля до PRO
    7 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
GrozInventor
@GrozInventor Автор вопроса
Люблю, когда сложность вопроса отмечают "Элементарно", при этом ни чего не ответив на сам вопрос ))
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы