Всем привет. Подскажите бест вей для динамической сортировки списка. Если

сортировать по индексу, то придется обновлять все индексы ниже. Можно конечно сортировать, забыл как называется этот вариант, где добавляются буквы "a", "ab", "abc", "b". Хотел бы узнать, мб у монги есть какое то уже полуготовое решение либо самое подходящее?

5 ответов

28 просмотров

Возможно вы про это спрашиваете: .updateMany({ listIndex: { $gt: 4 } }, { $inc: { listIndex: 1 } })

Mark-Davydkin Автор вопроса
Dmitry Arctic
Возможно вы про это спрашиваете: .updateMany({ lis...

Да, это обновит все нижние индексы, но это считается норм практикой? А если у меня будет миллион документов

Mark Davydkin
Да, это обновит все нижние индексы, но это считает...

Ты же один запрос отправишь, в чём проблема?

Mark Davydkin
Да, это обновит все нижние индексы, но это считает...

Если у тебя несколько млн записей, то использование оператора updateMany может привести к существенной нагрузке. Можно через bulkWrite, только это не лучше вариант т.к. может возникнуть блокировка коллекции. Также не стоит забывать про index т.к. он ускорит процесс выполнения запроса

Мне не известна полная структура вашей коллекции, но для оптимизации сделал бы следующий вариант. Каждый документ знает кто перед ним и кто после него стоит. Когда надо заменить документы местами, например 4 и 8, то в документах 3 5 7 9 меняем id документа. Возможно ещё в качестве защиты от дурака, создал бы индекс, который гарантирует, что ссылка на элемент выше и ниже не дублируется, но тут всё равно зависит от поставленной задачи

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

Обсуждают сегодня

Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
сделал сайт, прикрутил в боте сайт, и виджет логина. как автоматически логинить пользователя в аккаунт(телеграм), при входе с бота?
Александра Чернивецкая
5
Объясните, пожалуйста, почему компилятор ругается на использование в условии неинициализированной переменной: int x; Task.Run(async () => { x = await somefunc(); }).Wait...
Александр
5
Ребят, подскажите, пожалуйста, почему в префиксе к ассетам, которые генерируются через фильтр | theme в шаблоне, стал вдруг появляться index.php? Вот так выглядит ссылка на а...
Виталий
1
Всем привет. Ребята, подскажите, пожалуйста. у ботов есть ограничение на отправку сообщений - 30 сообщений в секунду, эти ограничения накладываются на все сообщения? или на со...
Artem Stormageddon
4
1. https://www.kaggle.com/code/ahmadrezagholami2001/housing-estimation-linear-regression 2. https://www.kaggle.com/code/ahmadrezagholami2001/uncovering-quality-in-wines-logis...
Ahmadreza
1
Блин, ребята, сори за тупые вопросы. А можно ли как-то открыть вебапку по нажатию на кнопку в меню(которое появляется слева, команды)?
Artem Stormageddon
3
а плаксы из-под питона умеют только в комфортных условиях что-то выдавить из себя?)
Lencore
9
Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
13
Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
Карта сайта