Dmitry
В эту сторону смотри
Nick
благодарю
только надо будет както извратится или создать пустую коллекцию чтоли чтобы к пустой выборке добавлялись эти юнионы
Nick
спасибо
а досточно сделать примерно так {$match: первое условие}, {$sort:}, ${unionWith:... [{$match: второе условие}, {$sort:}]}, ${unionWith:... [{$match: третье условие}, {$sort:}]},
Александр
Посоны, подскажите, я запихиваю массив объектов с валютами в коллекцию, валюты приходят с апи. Апиха обновилась, надо подтянуть в бд валюты, как их запушить чтоб не перетереть то что есть сейчас в бд, а именно добавить недостающие? Пока вариант в голове достать с апи, достать с бд, сравнить и вытащить те элементы что не сходятся и запушить. У монги нету методов которые это автоматизировали?
Александр
Не оч похоже на метод) это в связке с update работает?
Александр
Yaroslav
https://www.mongodb.com/docs/manual/reference/operator/update/addToSet/
Александр
Не знаете случаем онлайн тренажёра запросы поделать?
Yaroslav
Не знаете случаем онлайн тренажёра запросы поделать?
Я скачивал бд локально и тренеровался на ней
Yaroslav
Или mongodb atlas
Yaroslav
Но там мега мало ресурсов
Александр
Точняк
Yaroslav
На бесплатном тарифе
Александр
Токо надо где-то данных набрать
Александр
Через робо 3t
Александр
Поделать
Yaroslav
Токо надо где-то данных набрать
mongodump/mongo restore в помощь
Александр
gena
Привет. Хорошая ли практика хранить в памяти (просто в переменной) документы юзеров, который онлайн в приложении. При обновлении полей документов через doc.markModified, сначала происходит отправка вебсокета на фронт, и потом .save. Конечно скорость оч быстрая получается в районе 1-4 мс на беке, но я что то не уверен. Плюс застрял на проблеме с populated документами, пока не придумал как их такой техникой обрабатывать. Подскажите пожалуйста может есть какие то статьи на эту тему, или это вообще какой то костыль
Nick
Привет. Хорошая ли практика хранить в памяти (просто в переменной) документы юзеров, который онлайн в приложении. При обновлении полей документов через doc.markModified, сначала происходит отправка вебсокета на фронт, и потом .save. Конечно скорость оч быстрая получается в районе 1-4 мс на беке, но я что то не уверен. Плюс застрял на проблеме с populated документами, пока не придумал как их такой техникой обрабатывать. Подскажите пожалуйста может есть какие то статьи на эту тему, или это вообще какой то костыль
то что вы описали - это кэширование, и практически это основная функциональность редиса - возможность построить внешний распредленный кэш. Делать же кэш внутри приложения тоже можно и иногда без этого никак, а в зависимости от языка есть куча либ которые это уже реализуют. По факту тут трейдофы т.к. данные лежат ближе и к ним быстрее доступ, но на каждый инстанс приложения нужна доп память и надо выбирать что в приоритете
Бобомурод
скажите пожалуйста, смогу ли сэкономить оперативную память если на локальном девелопеском компе откажусь от запуска монги в докере и буду запускать на ровне с другими приложениями ?
lmn
в докере можно ограничение на память поставить тоже. ну что то сэкономишь если докер не будешь запускать естессна
Бобомурод
в докере можно ограничение на память поставить тоже. ну что то сэкономишь если докер не будешь запускать естессна
подрезал докеру, поставил ограничение в 2гб и сейчас весь докер с тем что там запущено (репликасат из двух) занимает 2.57гб можно ли запускать монгу просто без ничего и чтоб не больше 300мб оперативки занимал? для разработки у меня тестовыен данные максимум 1000 не сложных документов
Григорич
Не сможете) санкции))
Ещё раз спасибо! Сделал по вашему совету, работает очень быстро. Все ок👍
Anonymous
buenos dias mi grupo
Alena
можно ли гарантированно получить все записи которые идут в коллекции после/перед записи с n-айдишником?
Alena
я так понимаю если тупо фильтровать по айди сформированным стандартной функцией то могут быть коллизии?
Alena
задача даже проще, получить записи которые были записаны в коллекцию позже поределенной записи, нет како-го то идентифицируешего поля типо timestamp, только _id
Alena
коллизий на _id быть не может из-за наличия уникального индекса
хм, зуб даю я ловила коллизии, когда более поздние записи были наверху после фильтра по айди
Alena
добавьте поле с датой и делайте выборки по времени
ну так БД уже есть, уже поздно добавлять
Артем
можно ли гарантированно получить все записи которые идут в коллекции после/перед записи с n-айдишником?
Монговский айдишник можно конвертировать в дату и время, в которое этот айдишник был сгенерирован. Можно попытаться это использовать, чтобы получить записи до конкретного айдишника
Alena
о прикольно, спасибо
Артем
Можете проверить это в монго компасе, если у вас стоит. Зайдите в коллекцию, потом в раздел schema и нажмите analyze. Там будет анализ по всем полям, в том числе и по айдишнику. У меня для примера он выглядит так
Nick
ну так БД уже есть, уже поздно добавлять
ничего не поздно, дорабтываете код, из id вытаскиваете время и считаете что оно типа правильное, а дальше уже работает по нормальному
Viktar
А какойто другой используется?
что то я не зря написал. наоборот использует. почему то игнорирует ключ isDisable. может из за того что в true только 0.5% записей.
Viktar
судя по названию в индесе нет поля isDisable
Есть 2 индекса. Один с этим полем, второй без. Но почему то с этим полем индекс не используется
of Astora 𒉭
(node:1968) UnhandledPromiseRejectionWarning: Error: No default engine was specified and no extension was provided. коллеги, не подскажите почему он ругается?
lmn
Необработана отмена обещания) нет расширения или движка по умолчанию
of Astora 𒉭
вся ошибка
lmn
Похоже на джс. Там написано использовать флаг чтобы показать где ошибка
lmn
lmn
Пишет что нужен какой то жсный .catch()
of Astora 𒉭
оно и без этого должно работать, странно
lmn
Я хз это по монге чат а не по джс)) чем мог помог)
lmn
оно и без этого должно работать, странно
Судя по названию промис это наверное отложенное выполнение т.е. асинхронщина. И там есть ссылка прям в ошибке на доку как я понимаю и сообщение о деприкейте. Что наводит на логику что раньше можно было но тепрь нельзя) может в вашей версии ноды джс или чего там это уже актуально. А может что другое я хз)
of Astora 𒉭
добавил try catch, ошибка уже другая
of Astora 𒉭
почему-то рендерится не правильно
lmn
почему-то рендерится не правильно
Могу лишь пожелать удачи с жс) особенно с бампом версий и зависимостями) пробуйте в доку копать или чат по ноде)
Anonymous
Может установить MongoDB локально? Зачем мучиться с Атласом?
камил
Всем привет, у меня возникает ошибка: Operation `queues.find()` buffering timed out after 10000ms При подключении к дб, но она возникает только на удаленных серверах, т.е на моем пк такой ошибки нет, но как только пытаюсь запустить на дедике - ошибка
Alena
возможна ли фильтрация по айди как с обычной строкой т.е. без конвертации в тип объекта? типо такого: `db.vrstests.aggregate([ { $match: { "$and": [{}, { "app": {$eq: "62e37f9dee40093744bb1f1e"}, "os": { "$eq": "WINDOWS" } }] } } ])`
камил
не могу подключиться с других компов, только свой работает, в network access allow any уже стоит.
Alena
Можно, если первым степом пайплайна сделаете конвертацию в строку. Но тогда об индексах можете забыть
а можно сам. фильтр который с фронта прилетает в JSON формате как то переделать чтоб он автоматом при десериализации приводил к типу объектайди определенные поля?
Alena
я имею ввиду переделать на фронте
Alena
оказалось что можно с помощью EJSON указывать тип и десереализовать на беке
Bogdasar
Как мне выставить значение ключа у элемента массива в объекте второго уровня вложенности?