ktts
занимаюсь этим уже час
Kenan
можно пример кода?
https://docs.mongodb.com/manual/reference/operator/aggregation/lookup/
Denis
как можно просто найти по монге документы у которых non utf8 в поле
Denis
Здравствуйте. Как можно выполнить поиск в нескольких коллекциях по разным полям одним запросом?
зачем тебе одним, сделай выборку по основной коллекции и подмаппь потом поля для этих 20 элементов из других коллекций на бэке сервисы скейлить проще чем базу
Mike
Добрый день. Вариант со вложенной коллекцией во вложенной коллекции жизнеспособен? Или поискать иное решение? Данные мигрируются из firebase, там просто цельный объект. Заодно если есть материалы, или статьи по поводу бест практик в миграции данных с файрбейз на монго буду благодарен.
Ihor
Всем привет как склонировать обект в монгодб на пхп
The first
Всем привет! Есть схема Post: { name:Sting, attachments:[{ type:String, content: Object }] } Как найти документы у которых в attachments 2 или более элемента с type = 'video' ?
Azgat
Всем привет. Подскажите пожалуйста есть коллекция на 15-20 млн записей. Необходимо разово вытащить уникальное значение одного поля. Что для этого лучше по перфомансу distinct/aggregate, может еще что то. Коллекции на руках нету, отсутствует возможно протестировать
Nick
Спасибо большое
но готовьтесь заранее что все документы будут перечитаны и база может стать недоступной, и желательно такое запускать в некритичное время. сразу же готовьтесь к тому что даже при остановке клиента/консоли или через что будете делать запрос, сам запрос продолжит выполняться и его статус можно будет отслеживать через currentOp. Ну и если что его можно будет кильнуть через killOp передав id поулченный в currentOp
Azgat
Хорошо
Андрей
Привет. Товарищи, кто что может посоветовать либо поделиться опытом по следующему кейсу. Пришел ко мне человек и спрашивает. "Есть задача в сравнении фото между собой что имеем Фото и его вектор (текст около 32к символом) Таких фото в базе 60 000 При поступлении нового фото и вектора в бд необходимо сравнивать (проводить некоторые манипуляции с данными) новый вектор со всеми которые есть в бд по очередно и отдавать результат" Насколько я понимаю хранить в базе фото - такая себе затея, лучше держать на ФС, а в базе ссылки/хеши и т.д.. Насколько это реализуемо в принципе на мощностях монги?
Андрей
Основная задача именно в сравнении и на мощностях чего его лучше организовать
Андрей
Имеем большой зоопарк разных реляционнок, монги, хадуп. Перебираем варианты.
Nick
про сравнение ничего дельного не подскажу
Yar
Всем привет. Мне достался сервер с базой монго, которая находится в докере (на хост прокинута база данных); ни с тем, ни с другим до этого толком не сталкивался. Понадобилось настроить резервное копирование, начал смотреть в сторону mongodump, попробовал такое: mongodump --host="localhost:27017" --username $USER --password $PASS --gzip --archive=$NFS_SHARE/$(date +"%Y%m%d").gzdump И через пять минут корневой раздел диска начал угрожающе заполняться. Собственно, вопросы: 1. Верно ли я понимаю, что mongodump при работе прямо в докере какие-то временные файлы создает? 2. Если первое верно, как можно бэкапиться, по возможности монгу не стопая? Нужно ли рассмотреть отличные от mongodump способы в подобной ситуации?
Yar
Снапшоты же: https://docs.mongodb.com/manual/tutorial/backup-with-filesystem-snapshots/
для этого стопать базу наверное придется, а этого хотелось бы избежать
Yar
Я вообще о lvm сначала и подумал, но на разделе с базой даже lvm не стоит.
Yar
Скорее всего этим дампом и забивается место. Что бы более точно ответить, надо описание где и как вы делаете дамп
Дамп делаю с хостовой машины. Корень на 25 гб, в докер проброшен волюм /data/docker/mongo/db, раздел /data - 100 гб, сама база 60 гб. $NFS_SHARE в данном случае примонтирована как /backup
Anton
Пока еще не приступил к решению этой проблемы, но говорят смотреть в сторону снапшотов lvm
Anton
(не только в этом чате)
Yar
Не придётся. Рекомендую почитать ссылку.
Я читал. Создать lvm из не-lvm раздела гуманным способом пока не нашел способа.
Yar
Пока еще не приступил к решению этой проблемы, но говорят смотреть в сторону снапшотов lvm
Я на свежих монгах так и делаю + там обычно нет докера, а эта тачка досталась в наследство и я пока с ней только начал разбираться.
Alexander
Вытащить реплику на машину с lvm и её снапшотить... Ну тут уже можно много чего придумать. Зависит от ситуации.
Yar
Вытащить реплику на машину с lvm и её снапшотить... Ну тут уже можно много чего придумать. Зависит от ситуации.
она single, так (если бы была в реплике) бы можно было стопнуть одну и переделать разметку диска.
Alexander
она single, так (если бы была в реплике) бы можно было стопнуть одну и переделать разметку диска.
Ну да, боль. Тогда только mongodump. Почему отжирает место не знаю, не сталкивался с такой проблемой.
Андрей
А сравнение как выглядит?
Завтра уже будет известно.
yacha
ребят, а как можно назначить имя для колонки используя переменную в $push агрегаторе? Я хочу $push: {"$_id": "$$ROOT.data"}
Anton
Ребят не знаете что делать с server status was very slow и дальнейшем падением. Уже увеличивал ОЗУ на серваке. По-началу нормик, но потом видимо индексы подгружает в ОЗУ так что забита на 90%. И при дальнейших записях падает со словами server status was very slow
Anton
Ограничивал потребление ОЗУ но это давало такой же эффект, но хоть память не жрала больше лимита
Anton
Пишут что только увеличивать ОЗУ...
Андрей
А сравнение как выглядит?
Строка 32к это матрица из 2048 элементов, сравнивать нужно 1 матрицу с 60 тысячами матриц сравнение выглядит как перемножение матриц, вычисление среднего, возведение в квадрат, деление полученного в общем математические операции с матрицами
Андрей
а часто это надо делать?
Пока по статистике ориентировочные пики до 10 операций в секунду
Nick
хех
Nick
вам база только для хранения нужна в этом случае
Nick
остальное делать в приладе на кешах
Андрей
Насколько принципиальна вообще в такой задаче по вашему мнению разница в хранении в базе или на ФС?
Nick
Насколько принципиальна вообще в такой задаче по вашему мнению разница в хранении в базе или на ФС?
исключительно как удобнее вам в вашем окружении, операция чтения разовая на старте приклада ни на что особо не повлияет
Nick
Насколько принципиальна вообще в такой задаче по вашему мнению разница в хранении в базе или на ФС?
в базе может быть проще не пролюбить данные и не забыть их при миграциях куданит ьеще
Александр
Насколько принципиальна вообще в такой задаче по вашему мнению разница в хранении в базе или на ФС?
ФС тоже своего рода СУБД только с ограниченными возможностями и другим применением. Если дополнительные возможности типа сложных выборок, аггрегаций, транзакций, репликации и т.п. не нужны, то ФС скорее всего проще
Roman
Подскажите плез, есть поле companyId, в типа Schema.Types.ObjectId, но оно также может быть и пустым. Поставил дефолтное значение null, создаю запись с пустым значением, мне пишет ошибку "orders validation failed: companyId: Cast to ObjectId failed for value \"\" at path \"companyId\"". Как в таком случае правильно указывать тип поля? Или мне надо указывать в самом роуте, мол если поле пустое подставь туда null?
Roman
что никто не знает?
Nick
что никто не знает?
видимо все подумали, что это выясняется экспериментально и не отвечали
Kenan
хотя на сколько я понял при наличии type уже происходит валидация
Roman
в том то и дело что это не обязательное поле, ругается именно на тип
Roman
мол пустое значение он не может привести к Schema.Types.ObjectId
Roman
да
Nick
вот и ответ - вы пытаетесь сохранить строку в поле с другим типом, а значит нужно явно нул указывать
Roman
да уже допетрил)
🚀shmih🚀shmih🚀
Всем привет! Ребят, как сделать ссылку в одной схеме на другую схему на определенное поле, которое не ObjectId?
🚀shmih🚀shmih🚀
ЧТобы типа такого было: word_type: { type: вот тут поле, на которое нужно ссылаться, ref: 'WordListModel' } так можно вообще?
🚀shmih🚀shmih🚀
Вместо Schema.Types.ObjectId, которое я обычно во всех примерах вижу
Roman
интересно зачем вообще такое делать?
🚀shmih🚀shmih🚀
интересно зачем вообще такое делать?
У меня есть словарь, у каждого слова есть тип(простое, среднее, сложное ); и есть коллекция со списки слов (простые, средние, сложные). Мне нужно, чтобы каждое слово относилось к какому-либо списку, чтобы ссылка была. На ид, который выглядит некрасиво, не хочу, хочу на тайтл, который выглядит красиво.
🚀shmih🚀shmih🚀
Или так в монго не делается и это релятивизм головного мозга? (Всю жизнь работал с постре)
🚀shmih🚀shmih🚀
Хм...
🚀shmih🚀shmih🚀
Как же это так... Без внешних ключей... Как жить... Ок, спасибо :)
Viktar
Строка 32к это матрица из 2048 элементов, сравнивать нужно 1 матрицу с 60 тысячами матриц сравнение выглядит как перемножение матриц, вычисление среднего, возведение в квадрат, деление полученного в общем математические операции с матрицами
Тут я вижу только форич в стороннем коде делать сравнение. Для самой монги это будет сложновато. Я похожее делал, разворачивал кучу инстансов монги. И кучу серверов где запускал код. Пробовал с шардированием, но получалось много бруткаст запросов, профита не было
🚀shmih🚀shmih🚀
а почему нельзя для типа слова использовать enum?
Про это я не думал. А если у меня будет изменяться количество списков, не проблематично будет состав enum менять?
Roman
Про это я не думал. А если у меня будет изменяться количество списков, не проблематично будет состав enum менять?
сам не знаю на этот счет)) ну вообще зайти в схему бд и добавить строчку дело 5 секунд, а можно ли это как то через запрос делать, тут увы не знаю
Roman
дак ты же по сути можешь связать их по id, а когда будешь получать какое-то слово через агрегацию выводить его тип
Dr
Коллеги, а есть ли в природе парсеры монговских запросов? У меня длиннющий запрос в одну строку в slowquery, и рассматривать его вручную мучительно. Как json, разумеется, хрен распарсить.