Bro
https://www.codementor.io/@arpitbhayani/fast-and-efficient-pagination-in-mongodb-9095flbqr
Bro
те ты такие можешь юзать структуры
Bro
db.students.find({'_id': {'$gt': last_id}}).limit(10)
Bro
вместо скипов
no
Спасибо
Denis
Ага тока по перфомансу это то же самое что skip limit с сортировкой по _id, не считая стремного апи для фронтенда
Евгений [ : Kyber : ]
Всем привет! Есть в модели uid: { type: String, default: "", unique: true, }, он должен быть уникален, но в тоже время не у каждого он будет и он не обязателен. Подскажите, как сделать что бы не ругалось и было правильно для такой ситуации
Евгений [ : Kyber : ]
убрать default
Спасибо ☺️
Arystan
всем привет. хотел посоветоваться. есть таблица где хранятся отзывы юзеров о заведениях. и вот вопрос как можно сделать агрегацию, чтобы можно было на каждый филиал список юзеров, которые оставили там отзыв? и желательно чтобы максимум 4 юзера брал
Arystan
или как лучше записывать такую таблицу?
Bro
skip сканирует коллекцию
Bro
The cursor.skip() method requires the server to scan from the beginning of the input results set before beginning to return results.
Denis
нет
Индексы, не не слышал
Bro
доки не не читал
Denis
Ага тока по перфомансу это то же самое что skip limit с сортировкой по _id, не считая стремного апи для фронтенда
@yatoba нужна поясняющая бригада Если query входит в индекс, с cursor.skip идет фулскан или нет
Bro
https://docs.mongodb.com/manual/reference/method/cursor.skip/
Bro
тут все написано
Bro
Using Range Queries
Bro
Range queries can use indexes to avoid scanning unwanted documents, typically yielding better performance as the offset grows compared to using cursor.skip() for pagination.
Denis
тоже самое без sort по _id, колскан
Denis
колскана нет @bro_etiket
Bro
@dd_bb skip() или range query для пагинации на больших коллекциях?
Гена
Всем привет Подскажите, если у нас в реплика сете слейвы по мощностям сервера чуть слабее праймари ноды, это может повлиять на перфоманс?
Гена
При условии что все запросы идут в праймари
Daniil
@dd_bb skip() или range query для пагинации на больших коллекциях?
на самом деле все зависит от задачи, которая решается
Daniil
где то просто не подойдет один из вариантов
Bro
ну если коллекция небольшая
Bro
то и скип пойдет
Bro
хз может сейчас что-то нахимичили (хотя в доках все то же) но раньше если дофига скипов это было медленно дико
Aziz
Здравствуйте всем. Кто поможет с запросом? Есть таблица с документами: [{id:1,sum:2},{id:2,sum:3},{id:3,sum:5},{id:4,sum:2},...] Как получить первые N документов где сумма их sum >=7 ?
Alexander
Golang + MongoDB official driver. Как мне вставить кастомный айдишник? Кто знает? Гугление ни к чему ни привело
Roman
Переведите string в primitive.ObjectID
Alexander
ему нужен primitive.ObjectId
Alexander
не переводится
Alexander
тем более primitive.ObjectId — это алиас [12]byte
Roman
А вы хотите, чтобы в базе лежало _id: string вместо _id: ObjectID ?
Alexander
ну вообще нужен кастомный стринг в представлении ObjectID
Roman
ObjectId - это байты, так что только если string будет правильной длины и содержать в себе символы a-f0-9, то можно перевести
Alexander
ну вообще можно и просто string вместо ObjectID, если так возможно
Alexander
и как мне сделать string?
Alexander
а ему нужен обязательно primitive.ObjectId
Vladimir
blabla.toString() ?
Vladimir
а, пропустил, что это гошечка =(
Valera
а ему нужен обязательно primitive.ObjectId
если objectID это массив байтов [12]byte, проверяйте строку на длину (12), конвертируйте в срез байт, и вот вам и objectID)
Alexander
а мне нужна кастомная строка
Alexander
различной длины
Roman
Я не знаю, хорошее ли решение, использовать как _id кастомную строку. Всегда можно добавить два поля _id: ObjectId, my_id: string
Alexander
все-таки, тогда создам два поля
Aziz
[{id:1,sum:2},{id:2,sum:3},{id:3,sum:5},{id:4,sum:2},...] Как получить первые N документов где сумма их sum >=7 ? Помогите пожалуйста)
Valera
Aziz
Надо сумма чтобы была >=7)
Valera
Насчет количества элементов - limit(10)
Valera
Надо сумма чтобы была >=7)
так я и скинул) напишете {sum: {$gt: 6}}
Valera
>=7 то же самое что и >6
Valera
или там не целое?
Aziz
мне нужно чтобы сумма всех полей sum была >6
Valera
теперь понял)
Aziz
то есть чтобы выбирались поля {id:1,sum:2},{id:2,sum:3},{id:3,sum:5}
Aziz
10>6
Roman
Не уверен, что можно это сделать запросом. Скорее всего это надо делать на уровне приложения
Aziz
ну в node да можно перебором по 10 строк грузить и проверять. Но думал можно элегантнее )
Valera
а какая цель вообще? просто как я думаю, можно например отсортировать документы по убыванию и взять столько, чтобы сумма перевалила за 7) либо наоборот, по возрастанию и тоже взять столько, чтобы сумма стала больше 7. тут уж смотря что вам нужно, как можно больше доков или как можно меньше
Valera
не за что) надеюсь помог
{ NeFFeX }
всем привет, при добавлении айтема, айтем добавляется в конец, нужно чтобы были сверху
{ NeFFeX }
как можно сделать ?
{ NeFFeX }
Речь про массивы? push()/unshift()?
да,только мне нужно чтобы в базе сверху добавлялась
{ NeFFeX }
можно на фронте просто reverse, но он мутирует
{ NeFFeX }
думаю в монго есть метод)