сортировать по индексу, то придется обновлять все индексы ниже. Можно конечно сортировать, забыл как называется этот вариант, где добавляются буквы "a", "ab", "abc", "b". Хотел бы узнать, мб у монги есть какое то уже полуготовое решение либо самое подходящее?
Возможно вы про это спрашиваете: .updateMany({ listIndex: { $gt: 4 } }, { $inc: { listIndex: 1 } })
Да, это обновит все нижние индексы, но это считается норм практикой? А если у меня будет миллион документов
Ты же один запрос отправишь, в чём проблема?
Если у тебя несколько млн записей, то использование оператора updateMany может привести к существенной нагрузке. Можно через bulkWrite, только это не лучше вариант т.к. может возникнуть блокировка коллекции. Также не стоит забывать про index т.к. он ускорит процесс выполнения запроса
Мне не известна полная структура вашей коллекции, но для оптимизации сделал бы следующий вариант. Каждый документ знает кто перед ним и кто после него стоит. Когда надо заменить документы местами, например 4 и 8, то в документах 3 5 7 9 меняем id документа. Возможно ещё в качестве защиты от дурака, создал бы индекс, который гарантирует, что ссылка на элемент выше и ниже не дублируется, но тут всё равно зависит от поставленной задачи
Обсуждают сегодня