The dark fight
stop spam
Look im series i love Russian im from Iraq people there love Russian so much
Nick
Look im series i love Russian im from Iraq people there love Russian so much
this group about MongoDB and please use it only for themes related to this DB but you offtoping now. And please use russian language.
-
But i Don't know how to speak russian
Use translator from Yandex or google. You can translate our messages through the built-in function from Telegram
fenogentov
у нас монга active-standby (Master+Slave+Slave+Arbiter) микросервис работающий с монгой написан на go "Т.е. раньше библиотека монги работала криво с пулом соединений, то была написана своя либа" Сейчас планируем перейти на монгу 7 и переписать микросервис. Сейчас библитека нормально работает с пулом коннекторов?
fenogentov
Хз. Это было сделано ещё монга 4. Меня в принципе это и не парит. Мне надо правильно сделать Коннект к базе
fenogentov
А там на сайте чёт разные конфиги и + 'раньше либа не умела в пул'
Nick
А там на сайте чёт разные конфиги и + 'раньше либа не умела в пул'
https://www.mongodb.com/docs/drivers/go/current/faq/#how-does-connection-pooling-work-in-the-go-driver-
Andrey
А там на сайте чёт разные конфиги и + 'раньше либа не умела в пул'
Что называется, «как это у вас работает»? Mongo tools в официальном аккаунте Mongo написано на Go сто лет назад, и обновляется. Что должно было пойти не так в разработке, что у вас на го работало так с монгой, что пришлось писать своей, просто интересно.
fenogentov
писалось еще на монгу 4, а может и раньше
fenogentov
https://www.mongodb.com/docs/drivers/go/current/faq/#how-does-connection-pooling-work-in-the-go-driver-
https://www.mongodb.com/docs/drivers/go/current/usage-examples/#std-label-golang-usage-examples я еще на этом этапе ))
fenogentov
я с клика пришел, там пишу в шарды напрямую, а читаю из дистрибьют, а у как у монги это делается еще только разбираюсь
Nick
https://www.mongodb.com/docs/drivers/go/current/usage-examples/#std-label-golang-usage-examples я еще на этом этапе ))
судя по FAQ пул нативно интегрирован и про него вспомните только если коннекты забьете
Nick
я с клика пришел, там пишу в шарды напрямую, а читаю из дистрибьют, а у как у монги это делается еще только разбираюсь
в монге всегда пишется в мастер ноду. Читать можно с любой ноды как напрямую так и указывая readPreference и отдавая на откуп драйверу на какую конкретно ноду улетит запрос. Вопрос необходимых гарантий чтения
Nick
но мастер же меняется
ну так драйвер умный
fenogentov
значит ему в конфиге надо скормить все 3 айпи
Nick
значит ему в конфиге надо скормить все 3 айпи
да, можете тут глянуть как человек справлялся https://stackoverflow.com/questions/66570633/problem-connecting-to-mongodb-replicaset-using-golang-and-robo3t
fenogentov
супер, спасибо, все понятно
Nick
супер, спасибо, все понятно
ну и секция в самой доке https://www.mongodb.com/docs/drivers/go/current/fundamentals/connection/#connect-to-a-replica-set
Kenya-West
Всем привет! Есть база. Есть секреты, которые в ней надо хранить, типа токенов ботов в ТГ и юзернеймов (их ИД в ТГ). Шифровать-солить? Или пофиг, пусть открыто лежат?
Mllse
Солить
Mllse
Токен точно надо солить
Kenya-West
Токен точно надо солить
bcrypt? Или что-то другое для Ноды? Я NestJS пользуюсь
Mllse
bcrypt? Или что-то другое для Ноды? Я NestJS пользуюсь
А без разницы на чем. Если нет библиотека для нест жс, пишешь nest g lib name И погналь пилить свою либу например для bcrypt. Можно конечно и в сервисе его использовать. А можно и SHA8192
Plebey
кто может объеденить 6 bd файлов в один
𓆉 𝖙𝖚𝖗𝖙𝖑𝖊𝕶𝖎𝖓𝖌 ࿐
Can anyone help... foundUser.currentPlan.hasActivePlan = false foundUser.expiredPlans.push(foundUser.currentPlan) if (foundUser.upcomingPlan[0]) { if (foundUser.upcomingPlan[0].hasUpcomingPlan) { console.log("adding upcoming plan to current plan"); foundUser.currentPlan.hasActivePlan = true foundUser.currentPlan.validity = foundUser.upcomingPlan[0].validity foundUser.currentPlan.planActivationDate = moment().format("DD/MM/YYYY HH:mm:ss") foundUser.currentPlan.expireyDate = moment().add(foundUser.upcomingPlan[0].validity, 'days').format("DD/MM/YYYY HH:mm:ss") foundUser.currentPlan.amount = foundUser.upcomingPlan[0].amount foundUser.upcomingPlan.shift() } } foundUser.save() Here you can see (in bold text) first i'm trying to push old value of founduser.currentplan in foundUser.expiredplans and after that if upcomingplans exists then updating the founduser.currentplan with different values and later saving it using foundUser.save(). My problem is that if the condition is true then instead of saving old values of currentplan in expiredplans it is saving new values to it. How to solve it??
𓆉 𝖙𝖚𝖗𝖙𝖑𝖊𝕶𝖎𝖓𝖌 ࿐
please can anyone help??
𓆉 𝖙𝖚𝖗𝖙𝖑𝖊𝕶𝖎𝖓𝖌 ࿐
Can you send foundUser Model?And send screenshot of this js code?
It's fixed by using spread operator... Thanks for your help 👍
Сергей
добрый день Восстанавливаю маленькую базу (50мб) и почему-то она оооочень долго восстанавливается: cat /home/rsync/mongodump-26.09.2023.dmp | docker exec -i mongo.53kckp5m2rjx86ce5s5kbqiaz.eh3jociipo9njaauspqljgngp sh -c "mongorestore -u root -p $PASS --authenticationDatabase=admin --port 29017 --drop --db tracker --archive" Подскажите, почему так может быть?
Сергей
Сервер без нагрузки. Буквально недавно переливка занимала 5-10секунд
Сергей
Ящик водки
Всем привет! Есть база. Есть секреты, которые в ней надо хранить, типа токенов ботов в ТГ и юзернеймов (их ИД в ТГ). Шифровать-солить? Или пофиг, пусть открыто лежат?
если требуется работать с данными, AES лучше используй если не требуется, солишь, потом хэшируешь, шифрование не нужно все персональные приватные данные обычно шифруются пароли, токены, чаще всего, солятся + хэшируются
web
Захэшировать? Не все секреты получится так хранить
посмотри ulbi tv продвинутая авторизация. там все рассказывается как что надо
Kenya-West
пароли нужно зашифровать однонаправленным шифрованием, чтобы не расшифровывались
Это я делаю. А токены доступа к сторонним сервисам? Это данные пользователей моего бекенда.
web
"секреты типа токенов ботов от ТГ" - я про это писал
посмотри ulbi tv продвинутая авторизация. там все рассказывается как что надо
Kenya-West
А как вы будете использовать соленые токены?
Обратно рассол делать, потому что
Kenya-West
А как вы будете использовать соленые токены?
Ой, блин... Это же одностороннее шифрование без хэша и/или ключа! Где ж я ключ-то достану?
Kenya-West
А как вы будете использовать соленые токены?
Ок, вопрос снят. Ответ на него - хранить токены ТГ-ботов в открытом виде в базе, солить не надо
yopp
Ок, вопрос снят. Ответ на него - хранить токены ТГ-ботов в открытом виде в базе, солить не надо
Храните токены с client-side шифрованием: https://www.mongodb.com/docs/v5.0/core/security-client-side-encryption/ Там все проблемы связанные с тем как безопасно шифровать уже решены, вам нужно только передать ключ для шифрования вашему драйверу
web
Здесь клиент это ваше приложение, а не клиенты вашего приложения
но клиенты как раз будут клиент использовать. так что все сходится 😊
web
Здесь клиент это ваше приложение, а не клиенты вашего приложения
кстати, шифровать на клиенте это точно безопасно? ведь обычно при шифровании используется ключ шифрования
The Tree
Всем Привет! Может кто сможет помочь по такому вопросу. Есть проблема со временем выполнения запросов на поиск и аггрегирование данных в mongoDB. Нужна помощь с созданием индексов под запросы, а так же возможно с корректированием агрегиций для их попадания под индекс для увеличения скорости получения ответа
Askhat
Всем Привет! Может кто сможет помочь по такому вопросу. Есть проблема со временем выполнения запросов на поиск и аггрегирование данных в mongoDB. Нужна помощь с созданием индексов под запросы, а так же возможно с корректированием агрегиций для их попадания под индекс для увеличения скорости получения ответа
Ставишь explain на запрос под разным verbosity и смотришь на каком месте у тебя тормоза происходят. Если запрос слишком большой, пробуй большой запрос делить отдельно на куски и запускать через explain и смотреть как формируются этапы. После анализа вставляешь индексы или изменяешь запрос по другому и снова смотришь ещё раз через explain и так до бесконечности. Для того чтобы оптимизировать запрос, бывает и индексов недостаточно. Поэтому есть множество вариантов оптимизации. В доке можешь почитать типы операций которые выполняются на каждой стадии. Это должно помочь. https://www.mongodb.com/docs/manual/reference/command/explain/ https://www.mongodb.com/docs/manual/reference/explain-results/ Есть разного рода нюансы с тем почему у тебя всё медленно. Возможно сам запрос делает много lookup или facet операций или на первом этапе ты не пытаешься фильтровать запрос до адекватного количества записей прежде чем начать аггрегацию.
Kvhqm
А можно через .populate делать ещё какие-то действия, помимо "простого получения" из связанной схемы? Например $ne userId, или что-то в этом роде?
Kvhqm
Добавлять операторы в populate?Может лучше через аггрегацию делать?
Возможно. А можешь пожалуйста чуть поподробнее об этом? :)
Black
Возможно. А можешь пожалуйста чуть поподробнее об этом? :)
Есть в нативном драйвере и мангусе фреймворк аггрегации.Это по факту ты кучу подзапросов обьеденяешь в одном большом запросе.Напиши mongodb aggregation framework-там порядка 50 операторов на любой вкус и цвет
h8ace
Всем привет, Не подскажете как дать доступ на создания базу данных читать писать update делать, индексы создавать, также таблицы может создавать, НО он не может удалять базу данных. Также не может создавать, удалять, изменять пользователей? Это на подобий админа с урезанными правами
The Tree
Ставишь explain на запрос под разным verbosity и смотришь на каком месте у тебя тормоза происходят. Если запрос слишком большой, пробуй большой запрос делить отдельно на куски и запускать через explain и смотреть как формируются этапы. После анализа вставляешь индексы или изменяешь запрос по другому и снова смотришь ещё раз через explain и так до бесконечности. Для того чтобы оптимизировать запрос, бывает и индексов недостаточно. Поэтому есть множество вариантов оптимизации. В доке можешь почитать типы операций которые выполняются на каждой стадии. Это должно помочь. https://www.mongodb.com/docs/manual/reference/command/explain/ https://www.mongodb.com/docs/manual/reference/explain-results/ Есть разного рода нюансы с тем почему у тебя всё медленно. Возможно сам запрос делает много lookup или facet операций или на первом этапе ты не пытаешься фильтровать запрос до адекватного количества записей прежде чем начать аггрегацию.
Спасибо 🙏
Vista
Всем привет, Не подскажете как дать доступ на создания базу данных читать писать update делать, индексы создавать, также таблицы может создавать, НО он не может удалять базу данных. Также не может создавать, удалять, изменять пользователей? Это на подобий админа с урезанными правами
In MongoDB, you can create a user with limited administrative rights by following these steps: 1. Connect to the MongoDB instance using a privileged user account. 2. Switch to the admin database: use admin . 3. Create a new user account with the necessary privileges. For example, to create a user with read and write access to a specific database, the ability to create indexes, and without the ability to delete the database, you can use the following command: shell db.createUser({ user: "limited_admin", pwd: "password", roles: [ { role: "readWrite", db: "your_database" }, { role: "dbAdmin", db: "your_database" }, { role: "indexBuilder", db: "your_database" } ] }) Replace "limited_admin" with the desired username, "password" with the user's password, and "your_database" with the specific database name. This command grants the "readWrite" role for read and write operations, the "dbAdmin" role for creating tables, and the "indexBuilder" role for creating indexes. The user will not have the privileges to delete the database or manage other users. Note: Make sure you are connected as a user with sufficient privileges to create new users and assign roles. Please refer to the MongoDB documentation for more information on user management and available roles specific to your MongoDB version.
h8ace
In MongoDB, you can create a user with limited administrative rights by following these steps: 1. Connect to the MongoDB instance using a privileged user account. 2. Switch to the admin database: use admin . 3. Create a new user account with the necessary privileges. For example, to create a user with read and write access to a specific database, the ability to create indexes, and without the ability to delete the database, you can use the following command: shell db.createUser({ user: "limited_admin", pwd: "password", roles: [ { role: "readWrite", db: "your_database" }, { role: "dbAdmin", db: "your_database" }, { role: "indexBuilder", db: "your_database" } ] }) Replace "limited_admin" with the desired username, "password" with the user's password, and "your_database" with the specific database name. This command grants the "readWrite" role for read and write operations, the "dbAdmin" role for creating tables, and the "indexBuilder" role for creating indexes. The user will not have the privileges to delete the database or manage other users. Note: Make sure you are connected as a user with sufficient privileges to create new users and assign roles. Please refer to the MongoDB documentation for more information on user management and available roles specific to your MongoDB version.
Thank you for providing information on creating a user with limited administrative rights in MongoDB. This information has been very helpful and assisted me in understanding the process of creating such users in the MongoDB database. Спасибо вам за предоставленную информацию о создании пользователя с ограниченными административными правами в MongoDB. Эта информация была очень полезной и помогла мне разобраться в процессе создания таких пользователей в базе данных MongoDB.
fenogentov
У меня тут магия, а значит я туплю подключаюсь из го к монге mongoURI = mongodb://usr:pass@m01.loc:27017/?replicaSet=rs0&authSource=admin" clientOptions := options.Client().ApplyURI(mongoURI) client, err := mongo.Connect(ctx, clientOptions) client.Ping(ctx, nil) и все это отрабатывает, пинг срабатывает client.Database(DB_NAME).CreateCollection(ctx, COLLECTION_NAME) а при создании коллекции выдает ошибку (Unauthorized) not authorized on db_name to execute command Я изменил mongoURI и записал туда белеберду, и все равно пинг проходит без ошибки Что происходит?
Black
Логика проста-оно пытается подключиться->не получается->отправило пинг что не получилось
fenogentov
не, пинг проходит без ошибок. Как, если данные конекта не верные?
fenogentov
падает с ошибкой команда создания коллекции
fenogentov
а коннект типа без ошибок и пинг без ошибок. пинг это же и есть проверка подключения? а как он может подключиться к несуществующему?
Nick
не "может быть", а там явно про это в ошибке и написано, Unauthorized = нет прав
fenogentov
🧐Еще может быть проблема с правами
в создании коллекции, согласен но как можно пинговать пустоту?
Nick
в создании коллекции, согласен но как можно пинговать пустоту?
надо почитать что делает пинг в вашем драйвере
fenogentov
надо почитать что делает пинг в вашем драйвере
// Ping отправляет команду ping, чтобы убедиться, что клиент может подключиться к развертыванию.
fenogentov
URI скопипастил из Studio3T, все равно все по старомуб пинг "без ошибок", креат_колектион с ошибкой
Black
This command will return immediately even if the server is write-locked: