|
MongoDB Предыдущая запись.
|
|||
---|---|---|---|
#18+
Есть записи Код: javascript 1. 2. 3. 4. 5. 6. 7. 8.
Если какой-нибудь простой способ зная ключ _id получить предыдущую запись? Скажем от ключа 3001 получить запись с ключом 3000, а от ключа 2000 - запись 1002 Или только находить все с меньшим значением ключа, сортировать их в обратном порядке и потом брать первую? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.04.2021, 15:18 |
|
MongoDB Предыдущая запись.
|
|||
---|---|---|---|
#18+
voraa , в монге нет понятия "предыдущая" или "последующая" запись. Есть только выборка с условием. И да, тебе придется искать по условию "меньше" твоего ИД и с обратной сортировкой. Хорошо хоть ИД генерятся в "сортировочной последовательности". Можно использовать findOne() - так ты получишь нужный документ и в единственном экземпляре. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.04.2021, 20:04 |
|
MongoDB Предыдущая запись.
|
|||
---|---|---|---|
#18+
voraa Или только находить все с меньшим значением ключа, сортировать их в обратном порядке и потом брать первую? Это не особо затратно, т.к. по ИД есть индекс по умолчанию. Т.ч все будет быстро. ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.04.2021, 20:06 |
|
MongoDB Предыдущая запись.
|
|||
---|---|---|---|
#18+
krvsa voraa Хорошо хоть ИД генерятся в "сортировочной последовательности". Когда генерятся, то да. А когда я сам назначаю _id, и совсем не обязательно, что записи добавляются в последовательности возрастания _id. Поэтому и волнуюсь. Когда есть порядка 60000 записей, то будут браться, например 50000 с меньшим _id, потом сортироваться, что бы получить больший среди меньших. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.04.2021, 20:38 |
|
MongoDB Предыдущая запись.
|
|||
---|---|---|---|
#18+
voraa Когда генерятся, то да. А когда я сам назначаю _id, и совсем не обязательно, что записи добавляются в последовательности возрастания _id. Когда сам что-то назначаешь - сам и должен думать как потом с этим жить... ... |
|||
:
Нравится:
Не нравится:
|
|||
02.04.2021, 21:55 |
|
MongoDB Предыдущая запись.
|
|||
---|---|---|---|
#18+
voraa Когда есть порядка 60000 записей, то будут браться, например 50000 с меньшим _id, потом сортироваться, что бы получить больший среди меньших. Индекс работает не так... А по ИД делается индекс автоматически, без твоего участия. Ты сможешь проанализировать эффективность выборки. Сколько записей просмотрено и сколько было возвращено тебе в результате. Напомню, ты можешь использовать findOne() или limit(1)... Т.о. будет использована только одна запись, а не куча, как ты предполагаешь... ... |
|||
:
Нравится:
Не нравится:
|
|||
02.04.2021, 21:59 |
|
MongoDB Предыдущая запись.
|
|||
---|---|---|---|
#18+
krvsa, И действительно все довольно быстро. Использовал findOne От 14 до 40 ms на операцию (в node измерял) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.04.2021, 11:46 |
|
MongoDB Предыдущая запись.
|
|||
---|---|---|---|
#18+
voraa , монго можно запускать в некоем режиме - он будет писать в ограниченную коллецию информацию по всем запросам. Там главное 2 цифири: - сколько просмотрено записей - сколько возвращено Т.о. можно выбирать запросы с большим расхождением этих цифр и доводить до ума... ... |
|||
:
Нравится:
Не нравится:
|
|||
03.04.2021, 17:52 |
|
MongoDB Предыдущая запись.
|
|||
---|---|---|---|
#18+
krvsa voraa , в монге нет понятия "предыдущая" или "последующая" запись. +100. Надо добавить в шапку при создании треда и выделить жирно-красным. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2021, 05:43 |
|
MongoDB Предыдущая запись.
|
|||
---|---|---|---|
#18+
voraa От 14 до 40 ms на операцию (в node измерял) На самом деле это - мегатормозно. За это время на РСУБД можно выбрать сотню записей по производным индексам (да, тоже на ноде, с микросервисом, из оракла и перегонкой туда-сюда в json 2 раза). ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2021, 05:44 |
|
|
start [/forum/topic.php?desktop=1&fid=48&tid=1856527]: |
0ms |
get settings: |
23ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
47ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
215ms |
get tp. blocked users: |
2ms |
others: | 2420ms |
total: | 2745ms |
0 / 0 |