Алексей К
ага, например, сделать выборки "популярное"
Joe
ага, например, сделать выборки "популярное"
на такой случай все примерные данные дают. когда цифры переваливают за 1КК все популярные приложения рисуют 1М/1К и т.д. А подсчет можно в отдельной коллекции держать с помощью $inc
Joe
при запросе
Андрей
А вариант счетчики в redis хранить по id?
Андрей
Либо может find one and update?
Алексей К
ну например если с запасом, по хитам просмотров в пиках до 10 000 просмотров в час, т.е. операций $inc. И запросов выборки find этой коллекции примерно также.
Алексей К
просто цифру счетчика где-то хранить не вопрос) тут больше вопрос построить потом несколько запросов с ее участием и данных коллекции, не городя новых aggregate
Алексей К
просто есть уже некоторый конструктор запросов на базе find mongoosejs, он не рассчитан на агрегацию, только для find строит)
Алексей К
идеально чтобы в той же коллекции получить поле. Самое оптимальное пока представляю скидывать статистику просмотров в монгу периодически.
Андрей
На питоне я делаю find_one_and_update когда нужно например запросить статью и увеличить счетчик просмотров
Андрей
Если я правильно понял задачу вашу
Алексей К
решение инкрементировать счетчик через find_one_and_update понятно, вопрос только в том насколько при средней нагрузке find_one_and_update тормозит запросы find той же коллекции
Андрей
решение инкрементировать счетчик через find_one_and_update понятно, вопрос только в том насколько при средней нагрузке find_one_and_update тормозит запросы find той же коллекции
Полагаю что только через тестирование можно проверить, плюс через анализ производительности через всякие там COMPASS и что то еще вроде было
Андрей
По моим наблюдениям mongo даже на обычном vps ведет себя довольно шустро
Андрей
только нужные поля на выборку?
К примеру, если тебе нужны только названия статей и даты их создания, можно указать только их
Алексей К
это я применяю, забираю только нужные поля. В могне еще новичок, aggregate пока пугает) старался делать все через find)
Андрей
это я применяю, забираю только нужные поля. В могне еще новичок, aggregate пока пугает) старался делать все через find)
тем более. почему тогда пугают проблемы с производительностью? пробуй! если сложные запросы нужны, то без aggregate никуда. это самый мощный механизм в монге
Google
Всем привет в Mongodb можно сделать так у меня в Scheme есть массив - appraisal: [ 1, 2 ] как можно сделать так в каждом сохранение записать число в массив а не создавать новый скажем так - appraisal: [ 1, 2, 5 ,6 , 7, 10] можно так сделать ?
Google
$push
есть где-то пример
RapidCodeLab
есть, в документации
Google
ну если скажем я не знаю ID
Google
db.students.update( { _id: 1 }, { $push: { scores: 89 } } )
RapidCodeLab
любое условие для поиска тогда, мне откуда знать... как вы определяете, какой документ(ы) нужно обновить?
Google
Я имею что если в базе нету как при запросе его создать
Google
тут push update
RapidCodeLab
создать что?
RapidCodeLab
документ?
Google
Да
RapidCodeLab
Я имею что если в базе нету как при запросе его создать
вам на днях уже объясняли как это сделать
RapidCodeLab
upsert: true
Google
findOneAndUpdate
Google
в места update пойдёт
RapidCodeLab
у вас русский язык не родной? может на английском проще? я вообще с трудом понимаю, вы вопрос задаете или утверждаете?
Google
Google
что тут может быть не так ?
Google
schema
Joe
Пуш и appraisal местами поменяй
Google
всё равно не добовляет
Google
🆘🆘⚠️
RapidCodeLab
🆘🆘⚠️
https://mongoplayground.net/p/ZEyMu6f3VnL
RapidCodeLab
поменяй в query id на 2
RapidCodeLab
и посмотри что при id = 1 и при id = 2
RapidCodeLab
https://mongoplayground.net/p/Vjlho25KqBk или может так понятнее будет
Serg
readPreference=secondaryPreferred как ведет себя если хостов secondary несколько ?
a
Удалил все файлы dbpath в secondary и запустил mongod на нем. Он сначала был в статусе RECOVERING, а потом с какого то фига стал PRIMARY. Как такое возможно?
a
mongod --dbpath /mypath --fork --port 27017 --storageEngine wiredTiger --replSet myset --bind_ip 0.0.0.0 --logappend --quiet --journal --auth --keyFile /mykey.key--logpath /mylog.log
a
Запускал с такими параметрами.
maxsimych
Кто знает, что за ошибка, с чем может быть связано? (юзаю на Node.js, с монгусом) TypeError: value.getLowBits is not a function at serializeLong (/usr/src/node_modules/bson/lib/bson/parser/serializer.js:388:23) at serializeInto (/usr/src/node_modules/bson/lib/bson/parser/serializer.js:956:17) at serializeObject (/usr/src/node_modules/bson/lib/bson/parser/serializer.js:347:18) at serializeInto (/usr/src/node_modules/bson/lib/bson/parser/serializer.js:941:17
maxsimych
ожидается что value будет Long у которого есть метод getLowBits , но по факту там не Long, скорее всего Undefined
То есть value это поле документа, которое должно было быть long а оказалось undefined?
Dmitryi
Всем привет
Dmitryi
Подскажите как бороться с ошибкой
Dmitryi
Chunk move failed :: caused by :: ShardNotFound: Shard shard-s0 not found
Dmitryi
когда этого шарда в кластере нету
Edgar
Привет. MongoDB Enterprise платная? https://www.mongodb.com/try/download/enterprise
Edgar
Да
https://docs.mongodb.com/manual/core/security-ldap-external/ - я понял, что это платная фича. Нужно бесплатно. Мне нужен сервер, чтоб подключится из Keycloak к монго по LDAP. Я новичек в этом. Долго своё решение имплементить?
Edgar
ок, спасибо за инфу
Mihail
ребят подскажите можно ли полагаться на последовательность записей в базе?
Nick
если нужен порядок, используйте sort
Mihail
нет
спасибо
Vladimir
😐
Anatoly
Родители, заберите ребенка
Vladimir
Родители, заберите ребенка
на секунду показалось, что это чатик нашего сада и ужаснулся -_-
Андрей
Приветствую всех, подскажите, так выдаст мне только строки с act: 0, при этому них будет time только не текущий и time больше 0? или как-то по другому надо прописать? {$and: [{act: 0, time: {$ne: now}},{time: {$gt: 0}}]}
Андрей
или мб так над: {$and: [{act: 0}, {time: {$ne: now}},{time: {$gt: 0}}]}
Андрей
Dezmunt
При использовании skip c limit мы можем узнать что бд отдала последние элементы?
Dezmunt
или в ручную следить?
Vladimir
При использовании skip c limit мы можем узнать что бд отдала последние элементы?
нет, но можно запросить на один элемент больше чем нужно, и тогда можно знать, есть ли еще элементы или нет