Ivan
Задача: быстро выдрать коллецию из фс. Решение: в докере монга, оттуда слить. норм?
yopp
это одноразовая задача?
Ivan
надеюсь, да.
Ivan
ну на постоянке такого не планируется, нет
yopp
да, поднять в контейнере и сделать mongodump / mongoexport
Ivan
Благодарю
yopp
Таки я наконец перебрал всё что накопилось за все года и собрал из этого цикл лекций «MongoDB простым языком» Цикл разбит на три части: — как писать запросы в монгу и пользоваться агрегационным фреймворком — как гарантировать целостность данных и какими инструментами пользоваться для масштабирования и организации отказоустойчивости — как следить за производительностью и какими приёмами пользоваться для оптимизации Цикл для разработчиков и архитекторов. Похорошевшие москвичи могут приходить на лекции очно, а все остальные смогут воспользоваться чудесами онлайн трансляция. Можно купить проходку сразу на все лекции или слушать только интересующие. Наш чятик может воспользоваться безумным эксклюзивным предложением: — Онлайн: одна лекция 990₽, все лекции 9900₽ — Очно: одна лекция 1990₽, все лекции 19900₽ Для этого надо ввести промокод MONGORU19, он действует до конца 14 июля. Бонусом очного участия будет посиделка после лекции, с винишком и лимонадом, на которой можно будет задать любые вопросы. А если вам не понравится, то деньги всегда можно будет получить обратно. Полная программа и покупка билетов: https://db-ai.timepad.ru/event/996037/
Ivan
запись?
yopp
4.0.10 (May 31) ◦ 3.6.13 (June 10) ◦ 4.2.0-rc2 (Jun 27) События: • 10 июля, 19:00 Мск + Онлайн, Первый митап нашего чята: MongoDB Meetup #1 (Бесплатно) • 23 июля – 22 августа, Мск + Онлайн, Цикл лекций «MongoDB простым языком» (Скидка по промокоду MONGORU19: онлайн 990₽ или 9900₽, очно 1990₽ или 19900₽) • Плейграунд для запросов • Документация • Официальные курсы по MongoDB Stable: 4.0.10 | Bugfix: 3.6.13 Legacy: 3.4.21 (Jun 12) | Dev: 4.2.0-rc2 (Jun 27) End of life: 3.2.21 (Dec ’18), 3.0.15 (May ’17)
yopp
запись?
Постараемся, но пока не очень понятно как их потом продавать.
Ivan
Постараемся, но пока не очень понятно как их потом продавать.
ну такой вопрос, да. от честности на лекцию онлайн надо сильно до записываться?
yopp
если хочется за 990 рублей, то до 14 июля :) а дальше вплоть до начала
Andrew
Таки я наконец перебрал всё что накопилось за все года и собрал из этого цикл лекций «MongoDB простым языком» Цикл разбит на три части: — как писать запросы в монгу и пользоваться агрегационным фреймворком — как гарантировать целостность данных и какими инструментами пользоваться для масштабирования и организации отказоустойчивости — как следить за производительностью и какими приёмами пользоваться для оптимизации Цикл для разработчиков и архитекторов. Похорошевшие москвичи могут приходить на лекции очно, а все остальные смогут воспользоваться чудесами онлайн трансляция. Можно купить проходку сразу на все лекции или слушать только интересующие. Наш чятик может воспользоваться безумным эксклюзивным предложением: — Онлайн: одна лекция 990₽, все лекции 9900₽ — Очно: одна лекция 1990₽, все лекции 19900₽ Для этого надо ввести промокод MONGORU19, он действует до конца 14 июля. Бонусом очного участия будет посиделка после лекции, с винишком и лимонадом, на которой можно будет задать любые вопросы. А если вам не понравится, то деньги всегда можно будет получить обратно. Полная программа и покупка билетов: https://db-ai.timepad.ru/event/996037/
а есть демки лекций?
yopp
а есть демки лекций?
А что имеется ввиду под демками? Можно посмотреть мой доклад на Scalability Camp, это сокращеная версия того что будет на первой лекции — https://www.youtube.com/watch?v=SiawV5vbjMo Старых записей у меня не сохранилось, да и там в основном корпоративные тренинги. У нас тут есть какое-то количество людей которые уже слушали какие-то части из этго в разное время :) Отзовитесь!
yopp
Это первое чтение этого цикла, пока видео нет :) Тезисно в программе есть по каждой лекции топики
yopp
Если есть вопросы по каким-то дням, я с радостью отвечу
Andrew
понял, спасибо!
Veaceslav
Добрый день, подскажите плиз как бы мне получить из базы только те документы который имеют parent поле ? У остальных этого полня попросту нету. Дайте ссылку куда копать плиз, я чет не могу найти и все...
Veaceslav
Нашел, как оказалось нужно использовать: parent: {$exists: true}
Veaceslav
Syntax: { field: { $exists: <boolean> } }
Alexey
Новинки которые завезут в 4.2 одном месте: https://webassets.mongodb.com/mongodb_whats_new_4.2.pdf
вот бы авто создание промежуточных индексов в агрегации завезли, а то при больших данных она что есть, что нет...
Alexey
ну да, индексы же в агрегации работают только в первом матче
yopp
Не понимаю что вы имеете ввиду
Alexey
если делаешь агрегацию по большой коллекции, сначала это как правило фильтр - $match, потом $project для уменьшения данных в памяти или трансформация, потом $group с подсчетом элементов. Так вот индексы же только на первом $match есть, дальше уже чистый COLLSCAN, и даже на нескольких тысячах простейших документов группировка с подсчётом или какой-то фильтр после $project зависает ибо перебор. Вот еслиб можно было в $project указать поля по которым создать индекс в памяти - было бы много быстрее.
Alexey
понятно, что выборки это к sql, ну и чтож теперь
Alexey
просто такой ужасно тормозной group count sum 1, это позор
Alexey
прожект нет
Alexey
а то что далее матч или гроуп да
Gor
Матч должен быть первым
Alexey
конечно, но он может быть после прожекта
Alexey
чтобы отфильтровать трансформации
Gor
Может но индекс далее никак не имеет смысла так как данные в памяти
Alexey
ну ладно вам
Alexey
миллион доков в памяти, хочу индексировать эти данные по числовому полю
Alexey
если из заранее расположить в правильном порядке в памяти - группировка будет быстрая
Alexey
если как есть - перебор
Gor
миллион доков в памяти, хочу индексировать эти данные по числовому полю
Я о чем, ты сделал трансформацию на после матч. Результаты трансформации только в потоке, в памяти. Они временные и создавать на них индекс бессмысленно
Gor
Потому что там поток идёт
Alexey
я же описал, дело в том, в каком порядке они в памяти
Gor
Ага, в том что прочитались
Alexey
если их при построении сразу индексировать, будет быстро. другое дело сколько времени займёт такое построение
Gor
Тут подход менять надо, ибо этот сферический конь - явно использование возможностей не по способностям системы
Alexey
в sql для этого есть специальный индекс, не помню как зовётся, он может быть только один на таблицу
Gor
если их при построении сразу индексировать, будет быстро. другое дело сколько времени займёт такое построение
Честно тебе скажу, то о чем ты говоришь , это не понимание как оно работает внутри
Alexey
да это просто крик души, ибо агрегация мощная штука, столько всего там накручено, а работает только с тысячью доков.. такое модно и на nodejs выгрузив доки запилить...
Gor
да это просто крик души, ибо агрегация мощная штука, столько всего там накручено, а работает только с тысячью доков.. такое модно и на nodejs выгрузив доки запилить...
Да мощная но не предназначена в большинстве случаев для «мгновенных» результатов за редким исключением
Alexey
350 тысяч документов все просто зависло на 30 секунд из-за перебора и банального подсчёта документов в группировке
Gor
Мне например для мгновенной агрегации около ляма доков, свой агрегатор пришлось впиливать в могу
Alexey
и самая банальная
Alexey
которая очень нужна
Alexey
:(
Gor
и самая банальная
Не скажи, не все просто
Alexey
банальная не в смысле простоты реализации, а с точки зрения понимания
Alexey
поэтому подобные подсчеты и группировки приходится делать в эластике
Alexey
как и все агрегации с поисками
madspectator
Подскажите. Есть у меня коллекция db.user. Можно ли как-то в выводе db.user.stats() поглядеть, влезли все индексы коллекции в RAM или нет?
yopp
Если вам очень надо, то вы можете делать $out в специально подготовленную «временную» коллекцию, с нужными вам индексами и дальше выполнять следующую агрегацию уже над результатами из этой коллекции
yopp
И на evicted
yopp
Если они постоянно увеличиваются, значит индекс в кеше не стабилизируется
yopp
да это просто крик души, ибо агрегация мощная штука, столько всего там накручено, а работает только с тысячью доков.. такое модно и на nodejs выгрузив доки запилить...
Скорее всего вы или обрабатываете огромные документы или делаете какие-то очень сложные операции, например $unwind, либо у вас документы с очень медленного хранилища поднимаются/ временно сохраняются с allowDiskUsage, либо нахватает памяти, потому что 35000/30=1166 документов в секунду, это очень низкая производительность.
yopp
Тьфу. 350,000. Ну тогда 11к документов в секунду это уже очень хорошая производительность ;)
Veaceslav
Мужики а как бы проверить если работают индексы в базе ? Я вижу что есть индексы, вот только повышение скорости ответа базы на особо увеличилось ...
Maxim
В компасе отображается счетчик
Maxim
https://docs.mongodb.com/manual/tutorial/measure-index-use/
Alexey
Это невозможно, потому что после первого $match (или любой первой фазы) данные уже в пайплайне, а не в коллекции.
вот и пожелание такое, чтобы эти данные в пайпе были отсортированы по тому полю которое я выберу, все то
Alexey
то есть данные в коллекции сразу строятся в том порядке в котором будет группировка, кластерный индекс зовётся в mssql
yopp
Точнее даже не так
yopp
Я сомневаюсь что в принципе возможно реализовать то, что вы хотите
yopp
Без запросов и примеров данных сложно о чем-то говорить, но я почти уверен что вашу задачу можно решить иначе.
Anonymous
Mongo enterprise при установке нету бин директории, почему? Версия 4, есть дата и лог, больше нету ничего
Anonymous
Друзья, добрый день. Я в тупике, прошу помощи. Моя структура данных: { name, backlinks: [ name, links: [ donor, recipients: [] ] ] } Как мне пушить в recipients? Находя куда пушить по name-name-donor. Полдня потратив на эту ерунду натыкал это, но и это не работает: await domains.findOneAndUpdate( { slug: domainSlug, 'backlinks.name': donorDomain, }, { $addToSet: { 'backlinks.$[].links.$[link].recipients': { url: link, image, }, }, }, { arrayFilters: [{ 'link.donor': donor }] } ); В итоге мне кидает кучу ошибок, по типу MongoError: The path 'backlinks.3.links' must exist in the document in order to apply array updates.