Гость
Map
Форумы / NoSQL, Big Data [игнор отключен] [закрыт для гостей] / MongoDB Предыдущая запись. / 10 сообщений из 10, страница 1 из 1
02.04.2021, 15:18
    #40059132
voraa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MongoDB Предыдущая запись.
Есть записи
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
{_id: 1000, name: 'name1'...}
{_id: 1001, name: 'name2'...}
{_id: 1002, name: 'name3'...}
{_id: 2000, name: 'name4'...}
{_id: 3000, name: 'name5'...}
{_id: 3001, name: 'name6'...}
{_id: 3020, name: 'name7'...}
{_id: 4000, name: 'name8'...}


Если какой-нибудь простой способ зная ключ _id получить предыдущую запись?
Скажем от ключа 3001 получить запись с ключом 3000, а от ключа 2000 - запись 1002

Или только находить все с меньшим значением ключа, сортировать их в обратном порядке и потом брать первую?
...
Рейтинг: 0 / 0
02.04.2021, 20:04
    #40059182
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MongoDB Предыдущая запись.
voraa , в монге нет понятия "предыдущая" или "последующая" запись.
Есть только выборка с условием.

И да, тебе придется искать по условию "меньше" твоего ИД и с обратной сортировкой. Хорошо хоть ИД генерятся в "сортировочной последовательности".
Можно использовать findOne() - так ты получишь нужный документ и в единственном экземпляре.
...
Рейтинг: 0 / 0
02.04.2021, 20:06
    #40059184
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MongoDB Предыдущая запись.
voraa
Или только находить все с меньшим значением ключа, сортировать их в обратном порядке и потом брать первую?

Это не особо затратно, т.к. по ИД есть индекс по умолчанию. Т.ч все будет быстро. ;)
...
Рейтинг: 0 / 0
02.04.2021, 20:38
    #40059194
voraa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MongoDB Предыдущая запись.
krvsa
voraa Хорошо хоть ИД генерятся в "сортировочной последовательности".

Когда генерятся, то да. А когда я сам назначаю _id, и совсем не обязательно, что записи добавляются в последовательности возрастания _id.
Поэтому и волнуюсь.
Когда есть порядка 60000 записей, то будут браться, например 50000 с меньшим _id, потом сортироваться, что бы получить больший среди меньших.
...
Рейтинг: 0 / 0
02.04.2021, 21:55
    #40059206
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MongoDB Предыдущая запись.
voraa
Когда генерятся, то да. А когда я сам назначаю _id, и совсем не обязательно, что записи добавляются в последовательности возрастания _id.

Когда сам что-то назначаешь - сам и должен думать как потом с этим жить...
...
Рейтинг: 0 / 0
02.04.2021, 21:59
    #40059207
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MongoDB Предыдущая запись.
voraa
Когда есть порядка 60000 записей, то будут браться, например 50000 с меньшим _id, потом сортироваться, что бы получить больший среди меньших.

Индекс работает не так... А по ИД делается индекс автоматически, без твоего участия.

Ты сможешь проанализировать эффективность выборки. Сколько записей просмотрено и сколько было возвращено тебе в результате.
Напомню, ты можешь использовать findOne() или limit(1)... Т.о. будет использована только одна запись, а не куча, как ты предполагаешь...
...
Рейтинг: 0 / 0
03.04.2021, 11:46
    #40059272
voraa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MongoDB Предыдущая запись.
krvsa,
И действительно все довольно быстро. Использовал findOne
От 14 до 40 ms на операцию (в node измерял)
...
Рейтинг: 0 / 0
03.04.2021, 17:52
    #40059367
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MongoDB Предыдущая запись.
voraa , монго можно запускать в некоем режиме - он будет писать в ограниченную коллецию информацию по всем запросам.
Там главное 2 цифири:
- сколько просмотрено записей
- сколько возвращено

Т.о. можно выбирать запросы с большим расхождением этих цифр и доводить до ума...
...
Рейтинг: 0 / 0
05.04.2021, 05:43
    #40059611
crutchmaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MongoDB Предыдущая запись.
krvsa
voraa , в монге нет понятия "предыдущая" или "последующая" запись.

+100. Надо добавить в шапку при создании треда и выделить жирно-красным.
...
Рейтинг: 0 / 0
05.04.2021, 05:44
    #40059612
crutchmaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MongoDB Предыдущая запись.
voraa
От 14 до 40 ms на операцию (в node измерял)

На самом деле это - мегатормозно. За это время на РСУБД можно выбрать сотню записей по производным индексам (да, тоже на ноде, с микросервисом, из оракла и перегонкой туда-сюда в json 2 раза).
...
Рейтинг: 0 / 0
Форумы / NoSQL, Big Data [игнор отключен] [закрыт для гостей] / MongoDB Предыдущая запись. / 10 сообщений из 10, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]