mshsacc
Я просто искал какието видео уроки или курсы
Alex
Всем доброго времени суток! Может кто-то может подсказать как открыть mongodb в бесплатной версии dbview? Заранее спасибо за ответ
Alex
Ещё один вопрос: можно ли через mongo compass или что-то другое посмотреть схему данных с типами данных и их длинной?
Артем
Всем привет, пытаюсь получить данные и группировать их. Нашел, что можно использовать aggregate, но у меня данные объединяются по chatId: Number, и при попытке объединить группу { $group: { _id: '$chatId', messages: { $push: '$messageId' }, }, } получаю ошибку, что _id (ObjectId) не соответствует $chatId (Number)
Артем
как ошибка выглядит?
Уже не актуально, решил на стороне бека группировать
S
Привет, я пишу запросы к монго на Node.JS. Там есть библиотека mongoose, у которой есть метод populate, который выполняет то же, что и $lookup, однако вместо $lookup он делает отдельные запросы к соединяемым моделям. Создатели mongoose утверждают, что это быстрее чем $lookup. Но как такое может быть? Что отдельные запросы к БД быстрее нативной агрегации $lookup?
S
Стоит ли этому верить короче
S
Можете ссылочку дать где это написано?
Вот в первом абзаце: https://mongoosejs.com/docs/populate.html MongoDB has the join-like $lookup aggregation operator in versions >= 3.2. Mongoose has a more powerful alternative called populate(), which lets you reference documents in other collections.
S
И вот создатель либы привел пример: https://github.com/Automattic/mongoose/issues/3683#issuecomment-483290290
Evgeniy
Добрый день, как можно защитить базу, у меня просто логин и пароль пока. А то зашли и стерли все 😅
Нуриддин
Добавить ldap чтобы пароль менялся постоянно
Нуриддин
Вариантов много
Evgeniy
Ну про сертификаты находилась инфа, а вот заверить вход это как?
Нуриддин
Ну про сертификаты находилась инфа, а вот заверить вход это как?
Ldap записывает лог входа и действий на сервере или базе
S
А не тот, который могут подобрать
Evgeniy
Для начала нужен сильный пароль
Ну у меня вроде норм, верхний нижний регистр цифры и 13-15 знаков
Evgeniy
А от самого сервера?
Тоже самое, но я думаю врядли, что так как база в контейнере
Evgeniy
Вряд ли что?
Ну что зашли на сервер и очистили базу с него
Нуриддин
Ну что зашли на сервер и очистили базу с него
Нет ничего абсолютно надёжного. "Если что-то может произойти - это произойдет, а готов ли ты был или нет -зависит только от тебя"
S
Ну что зашли на сервер и очистили базу с него
Посмотрите пользователей в БД, мб остался дефолтный admin с дефолтным паролем?
mylifestyle
Друзья, как в pymongo написать регулярку для поиска начала каждого слова в поле. То есть если у меня имя яблоко свежее, если я введу 'све', то он найдет яблоко свежее. Пробую так, но не работает, не находит: regex = r'\све' goodDB.find('name': {'$regex': regex})
mylifestyle
так тоже не работает как в документации pattern = r'\bогурец\b' pattern = re.compile(pattern) regex = Regex.from_native(pattern)
mylifestyle
любые '^ябл' работают, любые с экранированием не работают(((
Constantine
там 8.0 уже в мейне, хотя на сайте еще RC https://www.mongodb.com/docs/upcoming/release-notes/8.0/
Andrey K.
Добрый день, как можно защитить базу, у меня просто логин и пароль пока. А то зашли и стерли все 😅
Если вход через веб-сервис, то можно добавить аутентификацию через nginx, конфиги элементарные, но уже доп. защита
Artyom
Привет, mongodb v4.4.9. В логах вижу ошибку {"t":{"$date":"2024-09-25T01:08:13.151+03:00"},"s":"I", "c":"NETWORK", "id":22989, "ctx":"conn198030683","msg":"Error sending response to client. Ending connection from remote","attr":{"error":{"code":6,"codeName":"HostUnreachable","errmsg":"Connection reset by peer"},"remote":"xxx.xxx.xxx.xxx:xxxx","connectionId":198030683}} как понять какой запрос привел к этой ошибке?
Nick
Привет, mongodb v4.4.9. В логах вижу ошибку {"t":{"$date":"2024-09-25T01:08:13.151+03:00"},"s":"I", "c":"NETWORK", "id":22989, "ctx":"conn198030683","msg":"Error sending response to client. Ending connection from remote","attr":{"error":{"code":6,"codeName":"HostUnreachable","errmsg":"Connection reset by peer"},"remote":"xxx.xxx.xxx.xxx:xxxx","connectionId":198030683}} как понять какой запрос привел к этой ошибке?
это не ошибка, прямой корреляции с запросами это сообщение не имеет. Оно про то что клиент разорвал соединение, адрес клиента указан в remote, доп инфу можно по connectionId из лога попытаться посмотреть
Artyom
это не ошибка, прямой корреляции с запросами это сообщение не имеет. Оно про то что клиент разорвал соединение, адрес клиента указан в remote, доп инфу можно по connectionId из лога попытаться посмотреть
Да, спасибо. Я просто предполагаю, что это какой то долгий запрос, который отвалился по таймауту приложения, и, если мое предположение верно, хотелось бы понять что это за запрос.
Nick
Да, спасибо. Я просто предполагаю, что это какой то долгий запрос, который отвалился по таймауту приложения, и, если мое предположение верно, хотелось бы понять что это за запрос.
ну и если не менялись настройки по логированию slowquery на монге, то запросы свыше 100мс должны быть залогированы, их также по ид коннекта можно найти в логах
Александр
Подскажите, как преобразовать в пайплайне вложенный в каждый документ список объектов в список конкретного поля этих объектов? Пример: { a: [{b: 1}, {b: 2}] } -> { a: [1, 2] }
Александр
$map
Спасибо
Evgeniy
можно ли для ssl/tls использовать самоподписанный сертификат?
Evgeniy
Какой сертификат вообще лучше использовать для ssl/tls
Влад
cloudflare
Evgeniy
Помогите подключиться к базе с TLS, я поднял ее в докере image: mongo:latest container_name: mongodb restart: always environment: MONGO_INITDB_ROOT_USERNAME: ${MONGO_INITDB_ROOT_USERNAME} MONGO_INITDB_ROOT_PASSWORD: ${MONGO_INITDB_ROOT_PASSWORD} command: mongod --tlsMode requireTLS --tlsCertificateKeyFile /etc/ssl/mongodb.pem --tlsCAFile /etc/ssl/ca.pem ports: - "27017:27017" volumes: - ./data/db:/data/db - ./certs/mongodb.pem:/etc/ssl/mongodb.pem - ./certs/ca.pem:/etc/ssl/ca.pem networks: - patrebna-network все нормально работает, а какие параметры нужно тут не могу понять this.url = `mongodb://${user}:${password}@mongodb:27017/patrebna?authSource=admin&tls=true`; void mongoose.connect(this.url); пишет что не верный url
Артем
Проверь значения логина и пароля. Может в них есть спецсимволы, которые ломают url
Evgeniy
Проверь значения логина и пароля. Может в них есть спецсимволы, которые ломают url
Да в начале было в этом дело, исправил. Теперь при подключении пишет user.find() и превышено время ожидание в 10 секунд
fenogentov
есть выборка из этой выборки надо получить уникальные значения поля "unit" и подсчитать количества документов по каждому уникальному значению Подскажите куда копать и что почитать?
Yura
Добрый день, подскажите пожалуйста, есть коллекция с ключами (допустим): a,b,c,d,e,f,g,h Запросы к этой коллекции могут приходить с различной комбинацией этих полей, b,c d,e,h a,f,g и т.д. Как правильно их оптимизировать/ускорить? Создать для каждого ключа индекс или для каждого запроса составной индекс на комбинацию? Плодить большое количество индексов тоже не очень хорошая идея как я понимаю, т.к. будет страдать вставка.
Назар
Всем привет. Почему реплика сет на вставку гораздо медленнее чем single? Локально у меня реплика из 1 ноды. Разница на insertOne с writeConcern w 1 и без 8 раз. На маке локально. У коллеги локально то ли на винде то ли через докер всего лишь в 3 раза. На сервере тоже в 8 раз разница, но там 3 ноды в реплике. Вопрос, насколько реплика должна быть медленее на вставку, и что можно сделать, чтоб вернуть частично производительность?
Назар
Проведи профилирование задержек primary-secondary.
так у меня нет secondary локально.
Назар
https://www.mongodb.com/docs/manual/reference/write-concern/
это я вкурсе. Как то большая разница 8 раз просто. 3 еще можно понять.
Сотрудник 236
так у меня нет secondary локально.
Это не зависит от расположения secondary. Просто замерь задержку. Включи логгирование полное. дальше не подскажу.
Kirilll
это я вкурсе. Как то большая разница 8 раз просто. 3 еще можно понять.
более по входным данным сложно сказать нужно смотреть само железо, на котором крутится база, уровень нагрузки, в т.ч. остальная нагрузка, которая может идти параллельно
Сотрудник 236
A write concern that includes or implies j: true causes an immediate journal synchronization.
Сотрудник 236
При указании majority это сработает. Сработает ли если укажешь числом - хз.
Сотрудник 236
я имею ввиду, що его вообще нет. У меня реплика с 1 нодой.
ты написал нода, я подумал нода в менеджере контейнеров.
Сотрудник 236
1 primary сервер
Сотрудник 236
попробуй указать w: 0 j true
Сотрудник 236
если задержки схожие, то видимо монга воспринимает w:1 для сета из 1 сервера как majority
Назар
с w: 1 скорость почти такая же как и без реплики. Но это же не безопасно. А если вообще не указывать writeConcern то тогда медленно
Сотрудник 236
Проверь настройку writeConcernMajorityJournalDefault
Сотрудник 236
Starting in MongoDB 5.0, the implicit default write concern is w: majority.
Назар
понятно, что оно медленно из за writeConcern. Непонятно почему медленно когда реплика из 1 ноды. И почему в 8 раз.
Сотрудник 236
Запись на диск
Сотрудник 236
Я же выше писал.
Сотрудник 236
w:majority -> j: true. j:true это ожидание записи на диск.