Vladimir
Все четенько, на 101 и тестирую
Тогда смотри где-то расхождения есть, у нас регекспы активно используются и нет проблем
Nick
будут отдельные вопросы приходите, поможем. Делать учебные проекты за вас никто не будет
Artem
Тогда смотри где-то расхождения есть, у нас регекспы активно используются и нет проблем
По конструкции все окей ? Я уже дня три их перебираю, на 101 все четко, в find - все четко. А в агрегации - первое совпадение только. Хотя влаг g установлен
Artem
пример на https://play.db-ai.dev/ соорудите
Как минимум, спасибо за сайт, потенциально великая для меня вещь) А то надоело базу тагать и настраивать коннект для компаса, буду тут тестить
Desalutar
Всем привет, есть схема продукта, у некоторых товаров есть скидочная цена(priceDiscount), как сделать так,чтобы когда происходило фильтрация, и если у продукта есть скидочная цена, то фильтровал именно по этой цене, а если нет, то по обычной ?
Desalutar
Использую mongoose
Desalutar
в агрегации?
нет, во время find
of Astora 𒉭
кажется есть параметр exists
Desalutar
of Astora 𒉭
так ?
запусти, и узнаем верно или нет)
of Astora 𒉭
для бизнес логики можно использовать агрегацию данных, выбираю монгу потому что гибко можно настроить схемы и масштабируемый
Desalutar
Расширение Polacode либо codesnap
Александр
Ребят, а можно развернуть populate без запроса ?
Александр
Если у меня документ в req хранится
V
Всем привет 🙌🏻 Очень нужна помощь в восстановлении репликасета 🙏🏻 Коротко: 3 ноды, каждая в докер контейнере на разных нодах. 5ТБ данных - Одна давно отвалилась, недавно запустили resync с праймари, сейчас она в Startup2 статусе - Вторая отвалилась пару дней назад. Уходит в постоянных рестарт из-за duplicate key в config.transactions коллекции. За пятницу-субботу не получилось ее восстановить - 3я нода отвалилась сегодня утром. Был oom, после поднятия она ушла в recovery. Судя по логам, recovery прошел, но монга не стартует, последние логи ниже Может кто-то сталкивался с такой ситуацией как с 3й нодой? Можно ли ее как-то завести? Если вдруг у кого-то есть возможность подключиться онлайн, было бы идеально 🙏🏻 {"t":{"$date":"2023-12-10T12:09:22.843+00:00"},"s":"I", "c":"STORAGE", "id":22430, "ctx":"initandlisten","msg":"WiredTiger message","attr":{"message":"[1702210162:843722][1:0x7fd27e380140], file:sizeStorer.wt, txn-recover: [WT_VERB_RECOVERY_PROGRESS] Recovering log 399667 through 399670"}} {"t":{"$date":"2023-12-10T12:09:22.849+00:00"},"s":"I", "c":"STORAGE", "id":22430, "ctx":"initandlisten","msg":"WiredTiger message","attr":{"message":"[1702210162:849166][1:0x7fd27e380140], file:sizeStorer.wt, txn-recover: [WT_VERB_RECOVERY_PROGRESS] Recovering log 399668 through 399670"}} {"t":{"$date":"2023-12-10T12:09:22.855+00:00"},"s":"I", "c":"STORAGE", "id":22430, "ctx":"initandlisten","msg":"WiredTiger message","attr":{"message":"[1702210162:855014][1:0x7fd27e380140], file:sizeStorer.wt, txn-recover: [WT_VERB_RECOVERY_PROGRESS] Recovering log 399669 through 399670"}} {"t":{"$date":"2023-12-10T12:09:22.902+00:00"},"s":"I", "c":"STORAGE", "id":22430, "ctx":"initandlisten","msg":"WiredTiger message","attr":{"message":"[1702210162:902348][1:0x7fd27e380140], file:sizeStorer.wt, txn-recover: [WT_VERB_RECOVERY_PROGRESS] Recovering log 399670 through 399670"}} {"t":{"$date":"2023-12-10T12:09:22.935+00:00"},"s":"I", "c":"STORAGE", "id":22430, "ctx":"initandlisten","msg":"WiredTiger message","attr":{"message":"[1702210162:935922][1:0x7fd27e380140], file:sizeStorer.wt, txn-recover: [WT_VERB_RECOVERY | WT_VERB_RECOVERY_PROGRESS] Set global recovery timestamp: (1701980628, 569)"}} {"t":{"$date":"2023-12-10T12:09:22.935+00:00"},"s":"I", "c":"STORAGE", "id":22430, "ctx":"initandlisten","msg":"WiredTiger message","attr":{"message":"[1702210162:935981][1:0x7fd27e380140], file:sizeStorer.wt, txn-recover: [WT_VERB_RECOVERY | WT_VERB_RECOVERY_PROGRESS] Set global oldest timestamp: (1701980628, 569)"}}
Vladimir
Всем привет 🙌🏻 Очень нужна помощь в восстановлении репликасета 🙏🏻 Коротко: 3 ноды, каждая в докер контейнере на разных нодах. 5ТБ данных - Одна давно отвалилась, недавно запустили resync с праймари, сейчас она в Startup2 статусе - Вторая отвалилась пару дней назад. Уходит в постоянных рестарт из-за duplicate key в config.transactions коллекции. За пятницу-субботу не получилось ее восстановить - 3я нода отвалилась сегодня утром. Был oom, после поднятия она ушла в recovery. Судя по логам, recovery прошел, но монга не стартует, последние логи ниже Может кто-то сталкивался с такой ситуацией как с 3й нодой? Можно ли ее как-то завести? Если вдруг у кого-то есть возможность подключиться онлайн, было бы идеально 🙏🏻 {"t":{"$date":"2023-12-10T12:09:22.843+00:00"},"s":"I", "c":"STORAGE", "id":22430, "ctx":"initandlisten","msg":"WiredTiger message","attr":{"message":"[1702210162:843722][1:0x7fd27e380140], file:sizeStorer.wt, txn-recover: [WT_VERB_RECOVERY_PROGRESS] Recovering log 399667 through 399670"}} {"t":{"$date":"2023-12-10T12:09:22.849+00:00"},"s":"I", "c":"STORAGE", "id":22430, "ctx":"initandlisten","msg":"WiredTiger message","attr":{"message":"[1702210162:849166][1:0x7fd27e380140], file:sizeStorer.wt, txn-recover: [WT_VERB_RECOVERY_PROGRESS] Recovering log 399668 through 399670"}} {"t":{"$date":"2023-12-10T12:09:22.855+00:00"},"s":"I", "c":"STORAGE", "id":22430, "ctx":"initandlisten","msg":"WiredTiger message","attr":{"message":"[1702210162:855014][1:0x7fd27e380140], file:sizeStorer.wt, txn-recover: [WT_VERB_RECOVERY_PROGRESS] Recovering log 399669 through 399670"}} {"t":{"$date":"2023-12-10T12:09:22.902+00:00"},"s":"I", "c":"STORAGE", "id":22430, "ctx":"initandlisten","msg":"WiredTiger message","attr":{"message":"[1702210162:902348][1:0x7fd27e380140], file:sizeStorer.wt, txn-recover: [WT_VERB_RECOVERY_PROGRESS] Recovering log 399670 through 399670"}} {"t":{"$date":"2023-12-10T12:09:22.935+00:00"},"s":"I", "c":"STORAGE", "id":22430, "ctx":"initandlisten","msg":"WiredTiger message","attr":{"message":"[1702210162:935922][1:0x7fd27e380140], file:sizeStorer.wt, txn-recover: [WT_VERB_RECOVERY | WT_VERB_RECOVERY_PROGRESS] Set global recovery timestamp: (1701980628, 569)"}} {"t":{"$date":"2023-12-10T12:09:22.935+00:00"},"s":"I", "c":"STORAGE", "id":22430, "ctx":"initandlisten","msg":"WiredTiger message","attr":{"message":"[1702210162:935981][1:0x7fd27e380140], file:sizeStorer.wt, txn-recover: [WT_VERB_RECOVERY | WT_VERB_RECOVERY_PROGRESS] Set global oldest timestamp: (1701980628, 569)"}}
Ого объемчик, судя по логу идет восстановление, нет? А что по статусу? systemctl status mongod.service
Cheusov Alexandr
Всем привет 🙌🏻 Очень нужна помощь в восстановлении репликасета 🙏🏻 Коротко: 3 ноды, каждая в докер контейнере на разных нодах. 5ТБ данных - Одна давно отвалилась, недавно запустили resync с праймари, сейчас она в Startup2 статусе - Вторая отвалилась пару дней назад. Уходит в постоянных рестарт из-за duplicate key в config.transactions коллекции. За пятницу-субботу не получилось ее восстановить - 3я нода отвалилась сегодня утром. Был oom, после поднятия она ушла в recovery. Судя по логам, recovery прошел, но монга не стартует, последние логи ниже Может кто-то сталкивался с такой ситуацией как с 3й нодой? Можно ли ее как-то завести? Если вдруг у кого-то есть возможность подключиться онлайн, было бы идеально 🙏🏻 {"t":{"$date":"2023-12-10T12:09:22.843+00:00"},"s":"I", "c":"STORAGE", "id":22430, "ctx":"initandlisten","msg":"WiredTiger message","attr":{"message":"[1702210162:843722][1:0x7fd27e380140], file:sizeStorer.wt, txn-recover: [WT_VERB_RECOVERY_PROGRESS] Recovering log 399667 through 399670"}} {"t":{"$date":"2023-12-10T12:09:22.849+00:00"},"s":"I", "c":"STORAGE", "id":22430, "ctx":"initandlisten","msg":"WiredTiger message","attr":{"message":"[1702210162:849166][1:0x7fd27e380140], file:sizeStorer.wt, txn-recover: [WT_VERB_RECOVERY_PROGRESS] Recovering log 399668 through 399670"}} {"t":{"$date":"2023-12-10T12:09:22.855+00:00"},"s":"I", "c":"STORAGE", "id":22430, "ctx":"initandlisten","msg":"WiredTiger message","attr":{"message":"[1702210162:855014][1:0x7fd27e380140], file:sizeStorer.wt, txn-recover: [WT_VERB_RECOVERY_PROGRESS] Recovering log 399669 through 399670"}} {"t":{"$date":"2023-12-10T12:09:22.902+00:00"},"s":"I", "c":"STORAGE", "id":22430, "ctx":"initandlisten","msg":"WiredTiger message","attr":{"message":"[1702210162:902348][1:0x7fd27e380140], file:sizeStorer.wt, txn-recover: [WT_VERB_RECOVERY_PROGRESS] Recovering log 399670 through 399670"}} {"t":{"$date":"2023-12-10T12:09:22.935+00:00"},"s":"I", "c":"STORAGE", "id":22430, "ctx":"initandlisten","msg":"WiredTiger message","attr":{"message":"[1702210162:935922][1:0x7fd27e380140], file:sizeStorer.wt, txn-recover: [WT_VERB_RECOVERY | WT_VERB_RECOVERY_PROGRESS] Set global recovery timestamp: (1701980628, 569)"}} {"t":{"$date":"2023-12-10T12:09:22.935+00:00"},"s":"I", "c":"STORAGE", "id":22430, "ctx":"initandlisten","msg":"WiredTiger message","attr":{"message":"[1702210162:935981][1:0x7fd27e380140], file:sizeStorer.wt, txn-recover: [WT_VERB_RECOVERY | WT_VERB_RECOVERY_PROGRESS] Set global oldest timestamp: (1701980628, 569)"}}
скопируйте данные с праймари на секондари при остановленных mongod с помощью scp/rsync/nfs+cp.
V
Спасибо 🙏🏻 Upd. За ночь 3я нода восстановилась 🤘🏻
Melonges
У меня есть model1 c key1 и model2 с key2. Я хочу найти все models1, у которых key1 равен key2 из model2 и добавить еще простую фильтрацию для model2. Подскажите, это возможно сделать одним запросом? Я только через aggregate думаю
Den
Всем привет! Не врублюсь, как правильно написать model.aggregate функцию так, чтобы искало по route, а мерджило по id=_id. Помогите 🙂 Collection A { id: ‘my_id’, route: ‘my_route’ } Collection B { _id: ‘my_id’, field1, field2, ..., fieldN }
Ivan
Добрый день. Подскажите, хочу собрать кластер replica set режима из 4 узлов. при инициализации пишет: errmsg command replsetinitiate requires authentication mongo db. Что необходимо сделать, чтобы собрать, указать явно db.auth("username", "password") ?
Den
а как пробовали7
разобрался; Агрегировал B c A, а надо было наоборот А с B
Ivan
включи в настройках монги authentication
а затем аутентифицироваться через db.auth("username", "password") ? как я понимаю данные указывать от базы admin?
Александр
Ребят, почему коллекция не загружается ?
Александр
так все время
Нуриддин
Ребят, почему коллекция не загружается ?
можно поподробнее о ситуации как задеплоина база, какие примерно данные и как по ping до серверу
Нуриддин
так все время
возможно слабое соеденение или коллекция очень большая
Нуриддин
с другогт браузера зашел, загрузилось)
это вообще ничего не объяснило, но рад что у вас заработало
Andrew
Всем привет, кто тестировал класс, который работает с монго и монгусом, с использованием mongo-memory-server. Почему я получаю такую ошибку?
Andrew
Roman Khonichev
я не специалист по монгусу, но коннект в первом describe, а во втором его нет... может объединить тесты под одним?
Andrew
спасибо, я глубо ошибся)
Ящик водки
для бизнес логики можно использовать агрегацию данных, выбираю монгу потому что гибко можно настроить схемы и масштабируемый
агрегации работают медленнее, если требуется поиск только в 1 коллекции и он укладывается в рамки .find() при условии, конечно, что поиск осуществляется по индексу
Ящик водки
Нет, агрегации не работают медленее find.
тестировал на практике, разница в скорости примерно на 70%. при skip до около 300 итераций при skip более 1000-2000 разница сокращается и .find() замедляется, но по прежнему быстрее, примерно на 30% и уже более 10000 когда, существенное время тратится на IOBytes transport latency, тогда время становится одинаковым. количество тестирований 10000 тысяч в 1 круге, среднее время за 20 кругов при разных условиях загрузки ЦП каждые 5 кругов для усреднения времени. а вопрос возник у меня такой, прежде чем проводить эти тесты и удостовериться, что .find() работает быстрее: когда аггрегация возвращает результат после 1 пинка .next(), в то время как find только курсор, который потом ещё нужно пинать постоянно (итерировать) вплоть до StopIteration error - аггрегация должно однозначно работать быстрее, так как транспорт ввода/вывода проводится 1 раз (на самом деле 2, на формирование команды и пинок CommandCursor-a). к тому же, возникала ещё 1 проблема - что драйвер pymongo был спроектирован разными людьми с разными стандартами в голове ответов, видимо... по этому при итерировании через list() StopIteration исключение не вызывается и пришлось придумать дополнительно, как его получать. на счёт второго, исключение очень просто получить: достаточно получить от драйвера курсор, а потом его 1 раз пнуть. если при .find().skip().limit() исключение не получено, то делаем вот так: cursor = connect.get_collection().find().skip().limit() [cursor.next() + list(cursor)] если cursor.next() не возвращает исключение, значит итерирование с помощью list() и последующее сложение списков будет успешным.
Andrey
тестировал на практике, разница в скорости примерно на 70%. при skip до около 300 итераций при skip более 1000-2000 разница сокращается и .find() замедляется, но по прежнему быстрее, примерно на 30% и уже более 10000 когда, существенное время тратится на IOBytes transport latency, тогда время становится одинаковым. количество тестирований 10000 тысяч в 1 круге, среднее время за 20 кругов при разных условиях загрузки ЦП каждые 5 кругов для усреднения времени. а вопрос возник у меня такой, прежде чем проводить эти тесты и удостовериться, что .find() работает быстрее: когда аггрегация возвращает результат после 1 пинка .next(), в то время как find только курсор, который потом ещё нужно пинать постоянно (итерировать) вплоть до StopIteration error - аггрегация должно однозначно работать быстрее, так как транспорт ввода/вывода проводится 1 раз (на самом деле 2, на формирование команды и пинок CommandCursor-a). к тому же, возникала ещё 1 проблема - что драйвер pymongo был спроектирован разными людьми с разными стандартами в голове ответов, видимо... по этому при итерировании через list() StopIteration исключение не вызывается и пришлось придумать дополнительно, как его получать. на счёт второго, исключение очень просто получить: достаточно получить от драйвера курсор, а потом его 1 раз пнуть. если при .find().skip().limit() исключение не получено, то делаем вот так: cursor = connect.get_collection().find().skip().limit() [cursor.next() + list(cursor)] если cursor.next() не возвращает исключение, значит итерирование с помощью list() и последующее сложение списков будет успешным.
Эээ, откровенно сложно понять, что вы тестировали и как, общие моменты только, а зачем вам skip?, вы типа «пагинацию» через skip реализовываете?
Nick
тестировал на практике, разница в скорости примерно на 70%. при skip до около 300 итераций при skip более 1000-2000 разница сокращается и .find() замедляется, но по прежнему быстрее, примерно на 30% и уже более 10000 когда, существенное время тратится на IOBytes transport latency, тогда время становится одинаковым. количество тестирований 10000 тысяч в 1 круге, среднее время за 20 кругов при разных условиях загрузки ЦП каждые 5 кругов для усреднения времени. а вопрос возник у меня такой, прежде чем проводить эти тесты и удостовериться, что .find() работает быстрее: когда аггрегация возвращает результат после 1 пинка .next(), в то время как find только курсор, который потом ещё нужно пинать постоянно (итерировать) вплоть до StopIteration error - аггрегация должно однозначно работать быстрее, так как транспорт ввода/вывода проводится 1 раз (на самом деле 2, на формирование команды и пинок CommandCursor-a). к тому же, возникала ещё 1 проблема - что драйвер pymongo был спроектирован разными людьми с разными стандартами в голове ответов, видимо... по этому при итерировании через list() StopIteration исключение не вызывается и пришлось придумать дополнительно, как его получать. на счёт второго, исключение очень просто получить: достаточно получить от драйвера курсор, а потом его 1 раз пнуть. если при .find().skip().limit() исключение не получено, то делаем вот так: cursor = connect.get_collection().find().skip().limit() [cursor.next() + list(cursor)] если cursor.next() не возвращает исключение, значит итерирование с помощью list() и последующее сложение списков будет успешным.
Хорошая работа по тестированию драйвера для питона, сходите ишью напишите, может доработают
Николай
Подскажите, можно ли получить функционал Транзакций при одной ноде Монги без replica set?
Nick
Подскажите, можно ли получить функционал Транзакций при одной ноде Монги без replica set?
Режим репликасет не обязательно требует наличия больше одной ноды. Так что да можно
Николай
Режим репликасет не обязательно требует наличия больше одной ноды. Так что да можно
Тогда вопрос. Использовал Docker для запуска Реплики в виде 1-ой ноды, но после перезапуска базы пропадали, хотя volumes примонтирован с базой, а так же нельзя было приконектиться, писало что не primary инстанс. Можете поделиться верным конфигом запуска через Docker???
Nick
эм, пункт 2 инструкции гласит "Start three instances of MongoDB."
и в чем проблема запустить только один?)
Нуриддин
Существуют ли имеджи контейнеров mongos?
Нуриддин
Если да можете дать пожалуйста ссылку
Andrey
Существуют ли имеджи контейнеров mongos?
Если про роутер, mongos, он есть внутри контейнера с монгой
Andrey
А спасибо
Только удобней из docker-compose и в command указать mongos, конфиг для него если надо, через внешний volume
Andrey
Хорошая работа по тестированию драйвера для питона, сходите ишью напишите, может доработают
Вообще не факт :), я постоянно использую pymongo и aiomotor - не очень понял принцип тестирования.
Nick
Вообще не факт :), я постоянно использую pymongo и aiomotor - не очень понял принцип тестирования.
вроде же очевидно человек взял свои потребности, выделил несколько кейсов в которых произвел сравнение в этих случаях и конкретно в них заметил проблемы производительности, которые аффектят именно его. Т.к. не было упоминания эксплейнов и других драйверов можно мело утверждать, что человек тестировал какой режим драйвера ему будет больше подходить, а не скорость работы монги и выбор лучшего варианта
Desalutar
Всем привет, реализовал пагинацию в mongoose, но проблема в том, что товары показываются рандомно, т.е. один и тот же товар может быть в другом списке, как это можно исправить ?
Desalutar
сортировку добавить
Спасибо большое, помогло, а то почти час голову сломал 😁
Нуриддин
Только удобней из docker-compose и в command указать mongos, конфиг для него если надо, через внешний volume
Да, а кстати у меня докер работает от пользователя root но файлы все создаются пользователем с id который совпадает с другим пользователем систем(то есть в контейнере работает юзер mongodb - 999 и в волум записываются по пользователю с id 999) как можно сделать так чтобы он записывался под условно другим пользователем
Нуриддин
Это больше вопрос к докерам и Линукс но возможно вы решали похожую проблему
Нуриддин
а в чем проблема?
Ну хочу сказать контейнеру что пользователь монго должен иметь другие параметры uid и gid когда записывает данные в деректорию
Нуриддин
Или в принципе
Нуриддин
Остальное нет
Нуриддин
а зачем
У нас почти все опирационные системы имеют фиксированные uid и gid у определённых стандартных пользователей установки( postgres -125 mongo -115 ) и становится запарным при переносе через nfs изменять постоянно имена пользователей обратно к стандарту
yopp
Nor
Привет. Что можно почитать про оптимизацию чтения из монги. Пишет быстро, с чтением начинает есть ресурсы.
Nor
какие ресурсы? память?
Стоит основной сервер и несколько реплик ЦП грузит такого типа запрос. Коллекция под несколько кк записей. Событий на удаление и добавление 1-2к rps.
Roman Khonichev
а с индексами что, что эксплейны запроса говорят?
Roman Khonichev
https://www.mongodb.com/docs/manual/core/aggregation-pipeline-optimization/
Nor
Т.е. сейчас его нет?