Server
Спасибо 👍
вот еще, правда холиварная тема, но REST API все) https://habrahabr.ru/post/334182/
Server
Почему при создании юзера локально все работает, а при попытке создать юзера на mLab.com вылазит эта ошибка? E11000 duplicate key error index: io.users.$userID_1 dup key: { : null } Монга же генерирует _id автоматически. В чем бага и как поправить?
Stepan
Народ, есть задача. Есть условие по которому надо выбрать взять количество документ, делаю так db.tasks.aggregate([ { $match: { taskStatus: taskStatus._id, deliveredDate: { $gt: oneMonthAgo } } }, { $group: { _id: null, count: {$sum: 1} } } ])
Slava
а в чем вопрос?
Stepan
Но теперь у меня есть несколько условий.
Stepan
Например сначала надо взять количество по одному условию
Stepan
Потом по совсем другому
Stepan
Можно ли это всё пихнуть в один запрос ?
Stepan
Потому что я пока думаю делать несколько запросов, и по кускам собирать нужную инфу
CC-BY-SA-4.0/Docker-ce30.0
Что.
Dmytro
агрегации используй
Stepan
ну я так и делаю, только пока не знаю как
Stepan
доки курил, именно то что нужно найти не смог
Stepan
db.tasks.aggregate([ { $match: { taskStatus: taskStatus._id, deliveredDate: { $gt: oneMonthAgo } } }, { $group: { _id: null, count: {$sum: 1} } } ]); db.tasks.aggregate([ { $match: { taskStatus: { $ne: taskStatus._id }, deliveryDate: { $lt: dateNow } } }, { $group: { _id: null, count: {$sum: 1} } } ]) db.tasks.aggregate([ { $match: { $or: [ { taskStatus: _id, deliveryDate: { $lt: dateNow } }, { taskStatus: _id , deliveryDate: { $lt: dateNow } } ], paid: { $ne: true }, } }, { $group: { _id: null, count: {$sum: 1} } } ]);
Stepan
вопрос: можно соединить эти 3 запроса в один ?
Stepan
Я думал что можно в $sum впихнуть что-то вроде $match
Stepan
Но пока не могу найти как
yopp
В $match собрать условие этих трёх запросов.
yopp
В зависимости от того уточнение ли это (логическое «и») или обобщение (логическое «или») просто собрать три запроса в один $match
Aleksandr
Всем привет. Подскажите пожалуйста - Как объединить несколько идентичных таблиц при совпадении некоторых значений (название компании, веб сайт)? Хочу заполнить пустые строки 1 таблицы данными с другой
Stepan
А как взять каунт по каждому $match отдельно ?
Stepan
В $match собрать условие этих трёх запросов.
Stepan
В зависимости от того уточнение ли это (логическое «и») или обобщение (логическое «или») просто собрать три запроса в один $match
yopp
А.
yopp
Данных много?
yopp
count можно без Aggregation framework делать. В твоём случае ты можешь либо оставить три запроса, либо сделать поле из условий по которому делать группировку с count
Stepan
Ну 3 запроса я для примера привел, там в зависимости от пользователся будет от 5 до 9 запросов
yopp
Значит что-то идёт не так
Stepan
Можно поподробнее про второй вариант ?
Stepan
count можно без Aggregation framework делать. В твоём случае ты можешь либо оставить три запроса, либо сделать поле из условий по которому делать группировку с count
yopp
https://docs.mongodb.com/manual/reference/method/db.collection.count/
Stepan
Ну это я знаю, но тогда надо каждый запрос по отдельности
Stepan
А делать 9 запросов как-то не хочется
yopp
Значит схему надо менять
yopp
Либо разобраться зачем вообще такие данные нужны и можно ли поставленную задачу решить другим образом
yopp
А делать 9 запросов как-то не хочется
Если данных не много и запрос поддерживается индексами, то почему бы и нет
Stepan
А $facet ?
Stepan
Кто-то использовал ?
Stepan
Работает )
Anonymous
кто в теме, насколько частые запросы ноды к монгоДБ вредны? сильно ли они тяжелые? стоит ли париться/заморачиваться на одном большом запроссе, или ходить маленькими но чаще?
Nick
кто в теме, насколько частые запросы ноды к монгоДБ вредны? сильно ли они тяжелые? стоит ли париться/заморачиваться на одном большом запроссе, или ходить маленькими но чаще?
думаю тебе поможет только тестирование и дальше уже подгонять под твои SLA. многое зависит от количества данных, типов запросов, их интенсивности, возможности их объединять в батчи (bulk), построены ли нужные индексы, хватает ли памяти, наличие реплик, шардирования и т.д. да и вообще может нужно перестроить структуру данных под твои требования
Nick
тогда просто сделай чтоб работало и сразу определи максимальный набор метрик и настраивай на них мониторинг, чтобы во время эксплуатации хотя бы иметь представление что где как работает, видеть динамику и уже относительно этого отталкиваться в "оптимизациях".
Sergey️
Всем привет, есть извращённый вопрос Как бы вы сломали базу?) А то обычный дроп это скучно и банально
Anonymous
Можно жесткий диск утилизировать
Sergey️
Циклически записывать и стирать
Anonymous
Если реплик нет — просто в форточку выбрось)
yopp
грохнуть метаданные wt например
yopp
записать в середину хранилища wt 1023 байта нулей
yopp
выстрелить в голову монге без журнала
yopp
в цикле кидать пару сотен запросов которые требуют full scan по многотерабайтной коллекции без таймаута
yopp
запустить создание background индексов на мастере на многотерабайтной коллекции
yopp
не знаю что ещё придумать
Nick
Апдейт с добавлением бинаря в поле размером в 15метров. Размер данных возрастет оч круто.
Nick
Если цель сделать чтото относительно незаметное, что нельзя сразу выявить и тем более исправить, но портящее данные, то просто проанализируй данные и например проинкременти какоенить числовое поле у доков с четным значением, и уменьши у нечетных обычными мультиапдейтами.
Nick
Ну или вариации типа обнулить все сделки по какомунить ключу.
Nick
Надо ли писать что за такое могут покалечить?)
Nick
Кстати созрел вопрос, вот я как написал выше добавлю к каждому доку филд на 15мб рендомный бинарный, а wt случаем не додумается каунить компактнее хранить такие доки,что они будут занимать меньше места? Т.е. Вместо 15гб на 10к доках, например 100мб?
Nick
Или оно жмет только каждый документ по отдельности?
Nick
@dd_bb сможешь прокомментировать, что я выше написал?
yopp
Нет, не может. afair, сжимаются даже не документы а страницы. Потом если данные псевдослучайные они при любых раскаладах не должны сжиматься.
yopp
(Псевдослучайные т.к. 15 мегабайт качественной чистой энтропии не так уж просто получить, не говоря уже о 15гб)
Nick
а страница имеется ввиду обычная страница куска памяти в 4кб?
yopp
Страница WT
yopp
если делать сложную компрессию с длинными словарями это будет очень медленно
Nick
почитал про страницы WT и собственно вопрос, а когданить прихдилось тюнить размеры страниц? и был ли эффект?
yopp
Не надо этого делать.
yopp
Вообще монгу не надо «тюнить». Нужно «тюнить» запросы и данные.
✙ galactico ✙
Привет, ребят! Посоветуйте, плз, где можно почитать детальнее про wiredtiger и mmapv1, и особенно про их сравнение ?
yopp
Что именно интересует?
Егор
Парни, всем привет. Посоветуйте клиент для монги, чтобы работать в терминале на удаленном серваке
Егор
Стандартный по команде mongo не очень удобен, вдруг есть что-то лучше.
Server
Парни, всем привет. Посоветуйте клиент для монги, чтобы работать в терминале на удаленном серваке
в терминале тоже люблю, но кроме mongo не встретил. с этим плагином к mongo повеселей https://github.com/TylerBrock/mongo-hacker