Viktar
Добрый день господа нашёл в логах вот такие медленные запросы {"t":{"$date":"2021-02-22T06:05:05.440+00:00"},"s":"I", "c":"COMMAND", "id":51803, "ctx":"conn94585","msg":"Slow query","attr":{"type":"command","ns":"catalog.personCatalog","command":{"find":"personCatalog","filter":{"_id":{"$oid":"563a2ba6e0cd4806cb747ed1"}},"limit":1,"$db":"catalog","$readPreference":{"mode":"nearest"},"lsid":{"id":{"$uuid":"d378dd2c-9d7c-4856-a108-b4c647c52db9"}},"$clusterTime":{"clusterTime":{"$timestamp":{"t":1613973898,"i":1}},"signature":{"hash":{"$binary":{"base64":"VZbderigiv7mNyF3cgSrwlmCEj0=","subType":"0"}},"keyId":6884215350032859137}}},"planSummary":"IDHACK","keysExamined":1,"docsExamined":1,"cursorExhausted":true,"numYields":1,"nreturned":1,"reslen":14723,"locks":{"ReplicationStateTransition":{"acquireCount":{"w":2}},"Global":{"acquireCount":{"r":2}},"Database":{"acquireCount":{"r":2}},"Collection":{"acquireCount":{"r":2}},"Mutex":{"acquireCount":{"r":1}}},"storage":{"data":{"bytesRead":81899,"timeReadingMicros":221181}},"protocol":"op_msg","durationMillis":221}} не понятно почему они туда попадают есло документ достаётся по _id
Fenicu
Привет! по ловеркейсу искать можно только с помощью агрегации?
MDWIT
Привет! по ловеркейсу искать можно только с помощью агрегации?
можно через регулярку искать, но очень медленно работает
Fenicu
до 2-х миллионов записей это много?
Fenicu
подождать секунду-две думаю пользователю не трудно
MDWIT
до 2-х миллионов записей это много?
для регулярки да( вообще, проще всего перед запросом в базу, просто в ловеркейс приводить данные)
Fenicu
я тоже думал об этом, но это может выглядеть не красиво
MDWIT
не знаю, мне кажется выглядит красивее и правильнее, чем регулярка)
Fenicu
не, я в плане, чтобы выдать пользователю результат)
WolderVsrat
не, я в плане, чтобы выдать пользователю результат)
Ну ты можешь хранить оригинальное написание и ловеркейс, В индекс положить ловеркейс и искать по нему часто вижу такие решения
WolderVsrat
Соотно все что приходит на вход приводится к ловеркейсу
WolderVsrat
А выдашь оригинальное написание, если необходимо
Fenicu
звучит как то, что не должно происходить
WolderVsrat
звучит как то, что не должно происходить
На какие только костыли в реальном мире не приходят) У нас в компании много где так, хранится и ловер и аппер и оригинал
MDWIT
звучит как то, что не должно происходить
текстовый индекс выполняет поиск без учета регистра https://docs.mongodb.com/manual/reference/operator/query/text/#text-operator-case-sensitivity
Fenicu
ух, вешать очередной индекс...
Fenicu
мне иногда кажется, что у меня индексов больше, чем обычных полей
Dmitriy
Коллеги, добрый день. Подскажите пожалуйста как максимально быстро решить такой вопрос. У меня есть данные в коллекции. Но видимо есть какие то записи которые не проходят по схеме. То есть, данные остались а схему изменена. Я делаю дамп базы и делаю стор и мне пишет database validation failded. Как я могу прогнать все записи в колекции через валидатор схемы что бы понять в каком документе у меня не проходит валидация? Заранее спасибо
Dmitriy
То есть, я хочу сделать что то вроде const users = await db.collection('users').find({}).toArray(); users.forEach(.......
Pavel
Pavel
Как отфильтровать по статусу $filter
Валерий
Привет, не разобрался? ищу что-то подобное)))
Валерий
Валерий
Как отфильтровать по статусу $filter
Viktar
Считается хорошим тоном, дать ответ если разобрались. Может кто нибудь наступит на тебе грабли
Sardor
Всем привет! Есть коллекция с документами, у которых есть поле date в виде строки. Как можно найти документы по фильтру $gte, приведя эти строки к датам? Т.е. мне нужно сначала с помощью $dateFromString привести строки к ISODate, а затем сделать выборку только документов, соответствующих фильтру $gte. Не понимаю, как написать такой запрос
Anonymous
Здравствуйте! Не знаю, туда ли обращаюсь, но возможно кто-то мог бы посмотреть базу данных маленькую учебную (школа) на предмет ошибок? Или, может, подсказать место, где бы это было возможно. Спасибо 🙏
Anonymous
А где схема бд?
У меня на компьютере. Она совсем простая в аксес) если согласитесь посмотреть, то я бы скинула через почту или диск)
Anonymous
Завтра
Anonymous
Ну это чат по mongodb, вам в чат с sql)
Не подскажете названия?
Joe
Не подскажете названия?
В лс, чтобы не засчитали за рекламу)
Alexey
Подскажите пожалуйста, что делаю не такб нащупал что проблема в строке let: {'act_id': '$account_id'}, - act_id всегда пустой получается, хотя такое поле (account_id) в записи есть: db.campaign.aggregate([ { $match: { campaign_id: '111111111111111111111111' } }, { $lookup: { from: 'user', let: {'act_id': '$account_id'}, pipeline: [ { $match: { 'accounts.id' : '$$act_id' } }, { $match: { '_id' : ObjectId('22222222222222222222222') } }, ], as: 'user', }, }, ])
Abdullah
Здравствуйте, я подключаюсь к атласу mongodb из приложения nodejs, запущенного локально, и оно работает. Но он выдает такую ошибку в репозитории героку.
Oleh Kopyl
Ребят, подскажите плиз как в монге сделать find, но чтобы искало с конца?
Oleh Kopyl
А можно как-то из документа получить значение сразу из монги? Не в словаре, а обычное значение.
Ilya
нет, но можно выбрать какие поля получить
Oleh Kopyl
нет, но можно выбрать какие поля получить
Это знаю, да. Было бы круто если можно было бы .find_one( {filter}, {fields}, {key} )
Ilya
а в чём проблема одного объекта с одним ключём?
Oleh Kopyl
а в чём проблема одного объекта с одним ключём?
потом нужно еще доставать значение отдельно
Ilya
в чём проблема?
Oleh Kopyl
Делаю db.auth(user, pass) Мне отправляется 1 Потом делаю db.jobs.find({}) и получаю not authorized on djinni to execute command Как авторизоваться чтобы можно было запросы отправлять нормально?
Vova
Добрый день! Подскажите пожалуйста, почему рабочая реплика пишет no primary available at the moment? db.printSlaveReplicationInfo() source: xxx.xx.xxx.xx:xxxxx syncedTo: Wed Feb 24 2021 11:51:15 GMT+0200 (EET) 1 secs (0 hrs) behind the freshest member (no primary available at the moment
Zaur
Приветствую господа, помогите сделать запрос. Есть коллеция документов вида: { botId: <int>, count: <int> time: <unixtime> } Надо их агрегировать по следующему принципу. Во первых собрать только документы у которых определенный boId. Далее поле time округлить до часа и посчитать сумму всех полей count в этом часу. Т.е. допустим у меня в базе 3 записи: 1) {time: 11:20, count: 1} 2) {time: 11:30, count: 2} 3) {time: 12:10, count: 4} Надо количества первых двух объеденить в один документ(потому что обе записи с 11 до 12 часов) и получить на выходе что то вроде [{ time: <11:00>, count: 3, - сумма первых двух записей },{ time: <12:00>, count: 4, - значение 3 записи. }] В выводе time не нужно приводить к строковому представлению даты, надо так же вернуть unixtime. Спасибо.
Pavel
Попытки написать самостоятельно были? А то как будто у заказчика ТЗ читаю😁
Zaur
Попытки написать самостоятельно были? А то как будто у заказчика ТЗ читаю😁
Пока уперся в непонимание как в конвейере округлить время )
Pavel
Используйте промежуток $gt и $lt
Pavel
Pavel
Есть у меня ощущение, что прислал вам дичь
Физик-ядерщик
Подскажите пожалуйста, после обновления документа нужно чтобы и сам объект документа обновился. Обновляю документ через сам объект документа: document.updateOne({ updateField: 42 })
Физик-ядерщик
знаю про findOneAndUpdate с параметром returnOriginal: false, но мне нужно через сам объект документа обновлять
Oleh Kopyl
На запуске монга кушала 194.8 М оперативки, сейчас в мониторинге показывает 74.2. Почему так может быть?
Viktar
Кеш
Oleh Kopyl
Кеш
И что?
Viktar
И что?
Это предположение, закешировал базу, а потом оставил только нужное в памяти
Viktar
А управлять этим как-то можно?
Сомневаюсь. Можно только в конфиге макс мемори поставит
Oleh Kopyl
Сомневаюсь. Можно только в конфиге макс мемори поставит
Мне бы наоборот чтобы не хавало, например, больше 100
Viktar
Мне бы наоборот чтобы не хавало, например, больше 100
Так как раз этот параметр, это и регулирует. Сколько в максимуме будет использовано
Viktar
cacheSizeGB
Viktar
В конфиге монги
Oleh Kopyl
В конфиге монги
/etc/mongodb.conf которые?
Viktar
Да
Oleh Kopyl
Да
INVALIDARGUMENT
Oleh Kopyl
Да
Так же?
Viktar
Нет)
Oleh Kopyl
Viktar
Во-вторых вы указали 100гб
Oleh Kopyl
Viktar
Я с телефона, мне не удобно конфиг написать
Oleh Kopyl
Я с телефона, мне не удобно конфиг написать
Я где-то видел в интернете, не могу найти блин(
Oleh Kopyl
Я с телефона, мне не удобно конфиг написать
Может storage.wiredTiger.engineConfig.cacheSizeGB ?