Ivan
Задача: быстро выдрать коллецию из фс.
Решение: в докере монга, оттуда слить.
норм?
yopp
это одноразовая задача?
Ivan
надеюсь, да.
Ivan
ну на постоянке такого не планируется, нет
yopp
да, поднять в контейнере и сделать mongodump / mongoexport
Ivan
Благодарю
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
запись?
Постараемся, но пока не очень понятно как их потом продавать.
yopp
если хочется за 990 рублей, то до 14 июля :) а дальше вплоть до начала
Andrew
yopp
а есть демки лекций?
А что имеется ввиду под демками? Можно посмотреть мой доклад на Scalability Camp, это сокращеная версия того что будет на первой лекции — https://www.youtube.com/watch?v=SiawV5vbjMo
Старых записей у меня не сохранилось, да и там в основном корпоративные тренинги.
У нас тут есть какое-то количество людей которые уже слушали какие-то части из этго в разное время :) Отзовитесь!
Andrew
yopp
Это первое чтение этого цикла, пока видео нет :) Тезисно в программе есть по каждой лекции топики
yopp
Если есть вопросы по каким-то дням, я с радостью отвечу
Andrew
понял, спасибо!
Veaceslav
Добрый день, подскажите плиз как бы мне получить из базы только те документы который имеют parent поле ? У остальных этого полня попросту нету.
Дайте ссылку куда копать плиз, я чет не могу найти и все...
Veaceslav
Нашел, как оказалось нужно использовать: parent: {$exists: true}
Veaceslav
Syntax: { field: { $exists: <boolean> } }
yopp
Alexey
ну да, индексы же в агрегации работают только в первом матче
yopp
Не понимаю что вы имеете ввиду
Alexey
если делаешь агрегацию по большой коллекции, сначала это как правило фильтр - $match, потом $project для уменьшения данных в памяти или трансформация, потом $group с подсчетом элементов. Так вот индексы же только на первом $match есть, дальше уже чистый COLLSCAN, и даже на нескольких тысячах простейших документов группировка с подсчётом или какой-то фильтр после $project зависает ибо перебор. Вот еслиб можно было в $project указать поля по которым создать индекс в памяти - было бы много быстрее.
Alexey
понятно, что выборки это к sql, ну и чтож теперь
Alexey
просто такой ужасно тормозной group count sum 1, это позор
Gor
Alexey
прожект нет
Alexey
а то что далее матч или гроуп да
Gor
Матч должен быть первым
Alexey
конечно, но он может быть после прожекта
Alexey
чтобы отфильтровать трансформации
Gor
Может но индекс далее никак не имеет смысла так как данные в памяти
Alexey
ну ладно вам
Alexey
миллион доков в памяти, хочу индексировать эти данные по числовому полю
Alexey
если из заранее расположить в правильном порядке в памяти - группировка будет быстрая
Alexey
если как есть - перебор
Gor
Потому что там поток идёт
Alexey
я же описал, дело в том, в каком порядке они в памяти
Gor
Ага, в том что прочитались
Alexey
если их при построении сразу индексировать, будет быстро. другое дело сколько времени займёт такое построение
Gor
Тут подход менять надо, ибо этот сферический конь - явно использование возможностей не по способностям системы
Alexey
в sql для этого есть специальный индекс, не помню как зовётся, он может быть только один на таблицу
Gor
Alexey
да это просто крик души, ибо агрегация мощная штука, столько всего там накручено, а работает только с тысячью доков.. такое модно и на nodejs выгрузив доки запилить...
Gor
Alexey
350 тысяч документов все просто зависло на 30 секунд из-за перебора и банального подсчёта документов в группировке
Gor
Мне например для мгновенной агрегации около ляма доков, свой агрегатор пришлось впиливать в могу
Gor
Alexey
и самая банальная
Alexey
которая очень нужна
Alexey
:(
Alexey
банальная не в смысле простоты реализации, а с точки зрения понимания
Alexey
поэтому подобные подсчеты и группировки приходится делать в эластике
Alexey
как и все агрегации с поисками
madspectator
Подскажите. Есть у меня коллекция db.user. Можно ли как-то в выводе db.user.stats() поглядеть, влезли все индексы коллекции в RAM или нет?
yopp
yopp
Если вам очень надо, то вы можете делать $out в специально подготовленную «временную» коллекцию, с нужными вам индексами и дальше выполнять следующую агрегацию уже над результатами из этой коллекции
yopp
yopp
И на evicted
yopp
Если они постоянно увеличиваются, значит индекс в кеше не стабилизируется
yopp
Тьфу. 350,000. Ну тогда 11к документов в секунду это уже очень хорошая производительность ;)
Veaceslav
Мужики а как бы проверить если работают индексы в базе ? Я вижу что есть индексы, вот только повышение скорости ответа базы на особо увеличилось ...
Dmitriy
Maxim
В компасе отображается счетчик
Maxim
https://docs.mongodb.com/manual/tutorial/measure-index-use/
Alexey
Alexey
Alexey
то есть данные в коллекции сразу строятся в том порядке в котором будет группировка, кластерный индекс зовётся в mssql
yopp
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.