Daniil
madspectator
Справедливости ради, могла ещё реализация очереди в самом kombu тормозить.
madspectator
Я имею в виду очередь с acknowledge-механизмами, там же надо какие-то хитрые действия делать, чтобы это поверх монги всё натянуть.
Alexander
Может кто подскажет почему при populate не присоединяеться вторая коллекция
Alexander
Alexander
Alexander
Это mongoose и express
Alexander
Если просто выполнить aggregate то работает а если poppulate то нет
Гена
Коллеги добрый день
Подскажите, можно ли в монго посмотреть клиентские коннекты (как?) и какие сертификаты они используют?
Гена
и еще вопрос
почему когда прогоняю команду
db.currentOp(true).inprog.forEach(function(x) { print(x.client) })
выдает вывод [unknown type]
Illia
populate('field'',[select], 'Model')
Alexander
Avtandil
Всем пример.
Пытался самостоятельно отыскать решение но безуспешно. Как сортировать по длине массива в aggregate?
Всем откликнувшимся спасибо.
if (req.query.sort === 'comments')
sort = { 'services.comments.length': -1 } ???
else sort = { 'services.rating': -1 }
const users = await User.aggregate([
{ $match: query },
{ $sort: sort },
{ $limit: 10 }
])
Nikita
Help. Mongoose.
Обычный .find() к коллекции на 240 элементов без единого фильтра занимает 500-600ms. Добавление .lean() не приводит ни к каким изменениями, все так же 500-600ms. В чем может быть проблема?
Dmitriy
Dmitriy
погодите, я вас о другом спрашивал, я просил показать не запрос из вашего приложения, а результат выполнения запроса напрямую в базе (подключится через любое gui и выполнить запрос), чтобы можно было понять проблема с данными или у вас в приложение. далее я попросил дать план запроса (так же выполнив соответствующие действия напрямую в базе) чтобы можно было посмотреть индексы (или их отсутствие) в случае если проблема с данными и результат прямого запроса к базе покажет +/- тот же результат что и у вас в приложение
Daniil
Illia
у меня есть документ где одно из полей указывает тип, как сделать $lookup с условием?
То есть, если тип == 'foo' надо делать lookup с одной коллекции, если тип == 'bar' с другой
Dmitriy
Nick
Nick
Avtandil
Nick
Nick
Смотрите примеры
Avtandil
Мделать проджект или аддфилд стейдж и добавить роле с длиной массива и уже по нему сортировку
Всем пример.
Пытался самостоятельно отыскать решение но безуспешно. Как сортировать по длине массива в aggregate?
Всем откликнувшимся спасибо.
if (req.query.sort === 'comments')
sort = { 'services.comments.length': -1 } ???
else sort = { 'services.rating': -1 }
const users = await User.aggregate([
{ $match: query },
{$project: сюда ставить???
{ $sort: sort },
{ $limit: 10 }
])
Nick
Лучше через $addFields вместо проджекта, и да туда то что выше скинул. Потом сортировку
Avtandil
Смотрите примеры
В примере numberOfColors как его получить в $sort в моем примере ?
Nick
Просто указать его и порядок сортировки
Illia
На каждый тип свой лукап стейдж
Не совсем понимаю. У меня модель данных следующая - { type: 'a', value: ''b'}, {type: 'z', value: 'x'}
Illia
И исходя ив type хранится ключ, по которому узнаю что надо аггрегировать
Nick
Отдельная коллекция = отдельный лукап, никак на уровне запроса вы не зададите какую коллекцию использовать, поэтому достаете док и делаете доп запросы. Либо меняете структуру, чтобы можно было использовать кучу стейджей с лукапами на каждый тип. В любом случае нужно менять подход к хранению, чтобы можно было комфортно работать
Illia
Спасибо
Muhammad
Есть ли какая-то возможность динамически формировать параметры поиска в mongo? То есть, если в запрос добавят через “?param=value” какой-нибудь новый параметр, то он автоматом (если у модели есть такое поле) подставился в поисковый запрос.
Leonid
Muhammad
Leonid
da
Leonid
ну и желательно валидировать конечно
Muhammad
спасибо
CrusaderX
Господа, посоветуйте, куда посмотреть. Монга не может синкнуть данные из праймари. Выкачивает в разные моменты разное кол-во данных, например, 20-100гб, и процесс синка перезапускается. В логах ничего не нашел, версия 3.6.16
inqfen
Может oom killer по памяти убивает?
CrusaderX
Нет ограничений
CrusaderX
Памяти - 32Гб
inqfen
Ну и это не значит, что она её не съест
inqfen
Ты по логам oom посмотри и по мониторингу
CrusaderX
Нет OOM
inqfen
Что вообще в dmesg, messages syslog
inqfen
Если что-то случилось, то что-то должно думаю было записаться
CrusaderX
Там все пусто
CrusaderX
Процесс монги же не убивается
CrusaderX
И тд
Murena
подскажите где можно посмотреть логи что удалилось-очистилось после запуска db.repairDatabase()
Murena
или в какой записи были проблемы
Murena
и еще хотел спросить - после команды db.repairDatabase - просто удаляется документ где была проблема или затирается поле ? Или скиньте ссылку где можно почитать логику работы этой команды. Просто прям подробно не нашел. спасибо
Avtandil
Может кто объяснить или поделиться источником разъяснения.
Как работает поиск в коллекции? Есть ли какая либо логика поиска по коллекции?
Использую разные методы(find, findOne, aggregate и т.п), копируя из разных источников но как эти методы достигают конечной пойсковой точки в структуре объекта не понятно. Есть ли логика поиска может кто объяснить ? Или дайте туториал на русском желательно чтобы лучше дошло )))
Nick
Сергей
Ребят, подскажите, как избавится от инстанса монги после получения данных?
Сейчас делаю так
Aleksandr
el.toObject() если это не массив
Aleksandr
если массив то arr.map(el => el.toObject())
Сергей
Гена
Коллеги, добрый день. Столкнулся с очень странной ситуацией. Пришел OOM и убил монгу. Это был секондари нода. По графикам в заббиксе РАМ из 42 было использовано 24.
[Thu Feb 13 14:47:16 2020] Free swap = 0kB
[Thu Feb 13 14:47:16 2020] Total swap = 524284kB
Выглядит словно забился своп. Я вообще не понимаю почему так произошло. Может у кого есть мысли, буду благодарен
Гена
@dd_bb
Ilya
монга же занимает половину оперативки по дефолту вроде
Гена
Nick
Гена
а почему нет?
Nick
дикое снижение производительности на ровном месте при наличии достаточного количества оперативы
Гена
то есть из-за свопа у нас ООМ пришел?
Гена
MongoDB performs best where swapping can be avoided or kept to a minimum, as retrieving data from swap will always be slower than accessing data in RAM. However, if the system hosting MongoDB runs out of RAM, swapping can prevent the Linux OOM Killer from terminating the mongod process.
Nick
за оом не скажу, меня триггернуло наличие свопа на машине с больше чем 4Гб оперативы
Гена
хмм
ну ладно, спасибо
Illia
Eсли я правильно понимаю, что первый $match сначала выберет все документы, а вторым я уже могу фильтромс учетом аггрегированых данных, верно?
Illia
https://share.getcloudapp.com/eDuxAA1g
Nick
Illia
Я понимаю
Illia
Тут суть, что мне взять документ с caseModel если лукап для events подходит под критерий
Illia
И вот пытаюсь разобраться
Nick
Не понял что нужно
Illia
Мне надо вернуть дела, которых есть заседание во временном промежутке