Богдан
Всем привет! Подскажите, какую структуру ФИО сделать, когда у меня может быть несколько вариантов фамилии, имён и отчеств.
Сейчас так:
[{
фам.: "Иванов",
имя: ["Василий", "Васелий"]
},
{
фам.: ["Петров", "Питров"],
имя.: ["Георгий", "Жора"]
}]
В принципе сама структура меня устраивает, но проблема возникает, когда я делаю составные индексы. Из-за массивов они не делаются
Нуриддин
Всем привет! Подскажите, какую структуру ФИО сделать, когда у меня может быть несколько вариантов фамилии, имён и отчеств.
Сейчас так:
[{
фам.: "Иванов",
имя: ["Василий", "Васелий"]
},
{
фам.: ["Петров", "Питров"],
имя.: ["Георгий", "Жора"]
}]
В принципе сама структура меня устраивает, но проблема возникает, когда я делаю составные индексы. Из-за массивов они не делаются
А в чём ваша цель?
Нуриддин
Эммм, у вас слишком много перечеслений может быть в одну коллекцию. Потому что у вас очень много возможных изменений за время может произойти. Может обратить внимание на способ поиска чем на изменение базы?
Там n-грамный анализ, метод расстояние Левенштейна
Нуриддин
Не искать по возможным вариантам а самые ближайшие возможные по ключу
Нуриддин
Так и запросы будут отрабатывать значительно быстрее, и точность увеличив - ресурсы сэкономите.
Нуриддин
Нуриддин
Тут 2 варианта, но в зависимости от задач их число растёт. Принцип как в подборе подходящего слова при ошибке(Т9)
Нуриддин
Богдан
По последнему предложению сможете найти минимум 4 (не считая ранжирования)
Посмотрел про эти методы. Пропишу, что понял, вдруг не понял)
1. структуру базы не меняем
2. в коде используем метод n-грамный анализ или расстояние Левенштейна
3. поиск будет возвращать похожие результаты (что для меня очень хорошо)
4. Такой подход должен ускорить запросы.
Сейчас у меня в базе 24 млн документов.
Нуриддин
Viktar
Y
Добрый день, подскажите
https://www.geeksforgeeks.org/how-to-perform-query-optimization-in-mongodb/#:~:text=Use%20%24in%20and%20%24nin%20Carefully%3A%20These%20operators%20can%20be%20slow%20for%20large%20arrays.%20Instead%2C%20use%20multiple%20%24or%20conditions%20if%20possible
Вот тут написано, что следует избегать оператора $in если в массиве много элементов, и заменить его на $or. А о каком колличестве идет речь?
Например 100 это много или мало? Или как в моем случае 600 - это еще сносно или стоит переписывать?
Y
И насколько вообще это нужно, может быть рекомендация уже устарела и под капотом где-нибудь запрос сам перестраивается...
Nick
Y
Y
И не стоит наступать на те же грабли
Alexander
Y
Y
Alexander
Ну разве что кроме того, чтобы не влезть в размер запроса. Такое бывало, но это уже совсем другое.
yopp
Meseret
Здравствуйте, я использую MongoDB. Не могли бы вы предложить бесплатные инструменты безопасности для проверки уязвимостей?
Ильдар
кто нибудь поднимал mongodb с помощью percona operator?
какая то проблема в новых версиях, не поднимается пмм агент, при включении...
pmm:
enabled: true
image:
repository: percona/pmm-client
tag: 2.44.0
Yura
Всем привет, а может кто-нибудь подсказать утилиты для работы с логом монги? jq не предлагать) Был ещё опыт работы с Hatchet, но это не очень удобно в настройке и когда нужно что-то найти/проанализировать оперативно. И ещё mtools, но она с версиями монги >4.4 не работает
Kenya-West
Всем привет! Почему в документации не описан запуск database-tools посредством docker-compose?
Kenya-West
Эх. Сдаюсь. Решил было сделать бекап на основе mongodump/mongorestore. А что? База 14 мегов занимает.
Для этого мне нужен способ воспроизводимой установки mongodb-database-tools на Ubuntu.
В macOS есть такая штука:
brew install mongodb-database-tools
А в Linux её нет. Надо качать tatar'ы с уникальными именами, а как их узнавать программно - загадка. Парсить HTML ради этого или городить иные подобные костыли я не готов.
Потом ещё и бинарники оттуда вилкой выковыривать и в /usr/share/bin/ пихать. Ну, ладно, Ansible всё стерпит.
Так что вопрос всё ещё актуален. Каким образом вы получаете гарантированно свежие mongodb-database-tools на свой Linux хост воспроизводимым автоматизированным неинтерактивным и желательно девственным способом?
Kenya-West
Ненавижу роботов. В основном за то, что они умнее, быстрее и сильнее меня.
Но и тут примерно тот же ответ.
Только не говорите мне, что реально придётся костылить...
Nick
Kenya-West
Nick
Kenya-West
что там в тулах надо нового? они и старые работают замечательно
Они не существуют в вакууме, к сожалению.
СУБД MongoDB постоянно обновляется (в облаке Atlas, где я хостюсь нахаляву - люблю бесплатновое), мне постоянно приходится обновлять бекенд, чтобы угнаться за обновлениями каждые полгода.
Уверен, тулзы в какой-то момент устареют настолько, что не переварят новую версию Монги. Поэтому прошу именно чего-то такого, что всегда будет устанавливать свежак - выбора нет, экосистема диктует правила.
А вообще, Монго - редиски, могли бы и подсобить с автоматизированной установкой...
Nick
Они не существуют в вакууме, к сожалению.
СУБД MongoDB постоянно обновляется (в облаке Atlas, где я хостюсь нахаляву - люблю бесплатновое), мне постоянно приходится обновлять бекенд, чтобы угнаться за обновлениями каждые полгода.
Уверен, тулзы в какой-то момент устареют настолько, что не переварят новую версию Монги. Поэтому прошу именно чего-то такого, что всегда будет устанавливать свежак - выбора нет, экосистема диктует правила.
А вообще, Монго - редиски, могли бы и подсобить с автоматизированной установкой...
у меня проект на монгусе на атласе лет 6 работает без единого апдейта драйверов монги, хз что и зачем там обновлять)
Andrey
Kenya-West
Kenya-West
Всем привет!
mongodump'нул БД.
Создал контейнер с новым, совершенно пустым экземпляром Монги:
services:
mongodb:
image: mongo
container_name: test_mongodb
environment:
- PUID=1000
- PGID=1000
volumes:
- ./database:/data/db
ports:
- 27020:27017
restart: unless-stopped
Запускаю mongorestore командой:
mongorestore --uri="mongodb://localhost:27020/?authSource=admin" .\path\to\backup
Но он не понял, как. Так и написал. И я не понял, как. Тоже написал сюда.
Вот логи:
2025-02-03T00:08:05.914+0500 preparing collections to restore from
2025-02-03T00:08:05.935+0500 don't know what to do with file "path\to\backup\mydatabase\contracts.bson", skipping...
2025-02-03T00:08:05.935+0500 don't know what to do with file "path\to\backup\mydatabase\contracts.metadata.json", skipping...
2025-02-03T00:08:05.935+0500 don't know what to do with file "path\to\backup\mydatabase\creatives.bson", skipping...
2025-02-03T00:08:05.935+0500 don't know what to do with file "path\to\backup\mydatabase\creatives.metadata.json", skipping...
2025-02-03T00:08:05.936+0500 don't know what to do with file "path\to\backup\mydatabase\invoices.bson", skipping...
2025-02-03T00:08:05.936+0500 don't know what to do with file "path\to\backup\mydatabase\invoices.metadata.json", skipping...
2025-02-03T00:08:05.936+0500 don't know what to do with file "path\to\backup\mydatabase\medias.bson", skipping...
2025-02-03T00:08:05.936+0500 don't know what to do with file "path\to\backup\mydatabase\medias.metadata.json", skipping...
2025-02-03T00:08:05.936+0500 don't know what to do with file "path\to\backup\mydatabase\persons.bson", skipping...
2025-02-03T00:08:05.936+0500 don't know what to do with file "path\to\backup\mydatabase\persons.metadata.json", skipping...
2025-02-03T00:08:05.936+0500 don't know what to do with file "path\to\backup\mydatabase\user-frontend-configs.bson", skipping...
2025-02-03T00:08:05.936+0500 don't know what to do with file "path\to\backup\mydatabase\user-frontend-configs.metadata.json", skipping...
2025-02-03T00:08:05.936+0500 0 document(s) restored successfully. 0 document(s) failed to restore.
🅰️nimeCoder
Всем привет!
mongodump'нул БД.
Создал контейнер с новым, совершенно пустым экземпляром Монги:
services:
mongodb:
image: mongo
container_name: test_mongodb
environment:
- PUID=1000
- PGID=1000
volumes:
- ./database:/data/db
ports:
- 27020:27017
restart: unless-stopped
Запускаю mongorestore командой:
mongorestore --uri="mongodb://localhost:27020/?authSource=admin" .\path\to\backup
Но он не понял, как. Так и написал. И я не понял, как. Тоже написал сюда.
Вот логи:
2025-02-03T00:08:05.914+0500 preparing collections to restore from
2025-02-03T00:08:05.935+0500 don't know what to do with file "path\to\backup\mydatabase\contracts.bson", skipping...
2025-02-03T00:08:05.935+0500 don't know what to do with file "path\to\backup\mydatabase\contracts.metadata.json", skipping...
2025-02-03T00:08:05.935+0500 don't know what to do with file "path\to\backup\mydatabase\creatives.bson", skipping...
2025-02-03T00:08:05.935+0500 don't know what to do with file "path\to\backup\mydatabase\creatives.metadata.json", skipping...
2025-02-03T00:08:05.936+0500 don't know what to do with file "path\to\backup\mydatabase\invoices.bson", skipping...
2025-02-03T00:08:05.936+0500 don't know what to do with file "path\to\backup\mydatabase\invoices.metadata.json", skipping...
2025-02-03T00:08:05.936+0500 don't know what to do with file "path\to\backup\mydatabase\medias.bson", skipping...
2025-02-03T00:08:05.936+0500 don't know what to do with file "path\to\backup\mydatabase\medias.metadata.json", skipping...
2025-02-03T00:08:05.936+0500 don't know what to do with file "path\to\backup\mydatabase\persons.bson", skipping...
2025-02-03T00:08:05.936+0500 don't know what to do with file "path\to\backup\mydatabase\persons.metadata.json", skipping...
2025-02-03T00:08:05.936+0500 don't know what to do with file "path\to\backup\mydatabase\user-frontend-configs.bson", skipping...
2025-02-03T00:08:05.936+0500 don't know what to do with file "path\to\backup\mydatabase\user-frontend-configs.metadata.json", skipping...
2025-02-03T00:08:05.936+0500 0 document(s) restored successfully. 0 document(s) failed to restore.
https://www.mongodb.com/community/forums/t/mongorestore-error-dont-know-what-to-do-with-file-bjson-and-json/147404/2 ?
🅰️nimeCoder
Ну вероятно дело в том, что так делает mongodump
🅰️nimeCoder
Ну и обратно из результата восстанавливает mongorestore
🅰️nimeCoder
Не вижу проблемы и какой либо "важности" которая мешает хранить имя в имени папки
Nick
🅰️nimeCoder
Ну была бы не папка, а огромный файл который хранит все пути к коллекциям и мета инфе + название бд
Так это та же самая папка только оверинженерная
Назар
Всем привет. Есть довольно наверное типичная задача. Пользователь загружает ексель файл, и на каждую строку нужно создать сущность в бд. Такж ще еще 1 сущность общую. И по 1 сущности на каждую 1000 строк. Но файл может быть например 100к строк. Итого 101001 сущность. И мне это нужно в транзакции, потому что если хоть одно что то я не могу сохранить, то все остальные данные нельзя сохранять. Во первых сейчас транзакция занимает 25 сек, при лимите а 30. Ну это еще поднять можно. Но у коллеги локально упало и сказало, что мало памяти. Да и вообще читал, что транакции больше 1к не рекоммендуется делать. Как тогда? Очереди? Или флажки какие то?
Артем
Артем
и какой-нибудь garbage collector документов, что неконсистентно вставились раз в сутки (например)
Nick
Назар
Что упало по памяти?
вроде какая то такая ошибка была. mongodb transaction is too large and will not fit in the storage engine cache
Сергей
Добрый день, подскажите, после выполнения deleteMany, надо какой-нибудь commit делать? Версия 4.4
Сергей
Запросы делаю в терминале
Nick
Сергей
Кирилл
Добрый день, пытаюсь подключится к WSL к локально установленной монге, но выдает ECONNREFUSED 127.0.0.1:27017, в Компасе же по mongodb://127.0.0.1:27017 корректно подключается
Tim🌵
Привет, монга жрет 24 гига оперативки на сервере
Идет активная запись и чтение в коллекции на скрине. Как видно коллекции большие. 24 гига для работы с такими коллекциями это вообще норм или где-то есть проблемы?
Abdurazzoq
Abdurazzoq
Если ты имеел ввиду total index size
Abdurazzoq
То это объем данных для хранения индексации
Abdurazzoq
Tim🌵
Abdurazzoq
Oleg
Tim🌵
Oleg
у нас какие-то монги на 256G RAM кажется и планируем до 512-1024 увеличивать..
Oleg
железо щас стоит недорого, особенно если за пределами РФ
Nick
Oleg
Oleg
Yura
Подскажите пожалуйста, почему при выполнении команды db.serverStatus().globalLock:
{
totalTime: Long('342384277000'),
currentQueue: { total: 0, readers: 0, writers: 0 },
activeClients: { total: 16, readers: 0, writers: 16 }
}
Для writers потолок всегда 16, вне зависимости от количества ядер на ВМ, или это количество зависит от другого параметра? И можно ли его регулировать? Версия монги 7.0.12