Ruslan
один из вариантов(слышал от знакомого) - изменением хтмля+js можна подкручивть себе
Вообщем это из-за того что ты как разработчик можешь найти определённую уязвимость и получить выгоду?
Vladyslav
как именно?
https://www.mongodb.com/docs/manual/reference/operator/query/eq/
Vladyslav
не получилось
Query я так понимаю не будет?
Philipp
В итоге, я так и не смог указать transactionLifetimeLimitSeconds при запуске контейнера через docker-compose. Однако, я решил проверить, что это вообще то что надо. Приконнектился к контейнерам mongo-cfg и mongo-shard (mongos не знает о таком параметре) и вручную установил таймаут: db.adminCommand( { setParameter: 1, transactionLifetimeLimitSeconds: 480 } ) Ошибки как появлялись, так и появляются. Теперь сижу, думаю, с чего я вообще взял, что проблема была в transactionLifetimeLimitSeconds: pymongo.errors.OperationFailure: Transaction 11 has been aborted., full error: { "errorLabels": [ "TransientTransactionError" ], "ok": 0, "errmsg": "Transaction 11 has been aborted.", "code": 251, "codeName": "NoSuchTransaction", "operationTime": "Timestamp(1658928464, 2)", "$clusterTime": { "clusterTime": "Timestamp(1658928464, 2)", "signature": { "hash": "\\xcbZp7\\xc6\\x0f\\x19\\xce\\xf1\\xef~\\x1d\\x8b\\xe91\\x13\\xc9_6\\x0f", "keyId": 7089060357766906000 } }, "recoveryToken": { "recoveryShardId": "shard0" } }
Alexandrr
В итоге, я так и не смог указать transactionLifetimeLimitSeconds при запуске контейнера через docker-compose. Однако, я решил проверить, что это вообще то что надо. Приконнектился к контейнерам mongo-cfg и mongo-shard (mongos не знает о таком параметре) и вручную установил таймаут: db.adminCommand( { setParameter: 1, transactionLifetimeLimitSeconds: 480 } ) Ошибки как появлялись, так и появляются. Теперь сижу, думаю, с чего я вообще взял, что проблема была в transactionLifetimeLimitSeconds: pymongo.errors.OperationFailure: Transaction 11 has been aborted., full error: { "errorLabels": [ "TransientTransactionError" ], "ok": 0, "errmsg": "Transaction 11 has been aborted.", "code": 251, "codeName": "NoSuchTransaction", "operationTime": "Timestamp(1658928464, 2)", "$clusterTime": { "clusterTime": "Timestamp(1658928464, 2)", "signature": { "hash": "\\xcbZp7\\xc6\\x0f\\x19\\xce\\xf1\\xef~\\x1d\\x8b\\xe91\\x13\\xc9_6\\x0f", "keyId": 7089060357766906000 } }, "recoveryToken": { "recoveryShardId": "shard0" } }
куда ответы от СУБД возвращаются?
Philipp
куда ответы от СУБД возвращаются?
Не совсем понял вопрос. Куда возвращается ответ о созданном внутри транзакции документе? Его забирает PyMongo.
Philipp
Да
Alexandrr
Да
при дебаге, какое исключение возвращается, то что выше? сам пайтон не обрывает коннект на своей стороне?
Philipp
Надо поднимать локально, смотреть. Сейчас попробую ещё с повторением коммита написать, сбилдить образ и протестировать, если то же будет, запущу в IDE с дебагом.
Alexandrr
FastAPI + Motor
в фастапи тоже логи вроде дефолтные есть, если память не изменяет, попробуй посмотреть туда, поискать исключения там, по ним уже судить нужно, что с коннектами происходит
Alexandrr
FastAPI + Motor
моё подозрение = timeoutError если так, то используй настройки подключения которые выше писал тебе
Philipp
моё подозрение = timeoutError если так, то используй настройки подключения которые выше писал тебе
Пробовал: async def start_session(db: Database = Depends(get_database)) -> Session: """ Start MongoDB Session and Transaction """ async with await db.client.start_session() as session: async with session.start_transaction(max_commit_time_ms=60000): yield session
Alexandrr
Пробовал: async def start_session(db: Database = Depends(get_database)) -> Session: """ Start MongoDB Session and Transaction """ async with await db.client.start_session() as session: async with session.start_transaction(max_commit_time_ms=60000): yield session
у тебя объект подключения создается с дефолтными настройками, а потом ты пихаешь в таймаут транзакции параметр, который не относится к подключению
Philipp
Хмм, не уверен, что это так, ведь тогда этот параметр тут вообще ни к чему, ведь всегда ролял бы только таймаут коннекта.
Philipp
Текс, похоже это была какая-то внутренняя питонячая проблема. Я переписал код со start_transaction на with_transaction согласно докам и эксепшены ушли: https://motor.readthedocs.io/en/stable/api-tornado/motor_client_session.html#motor.motor_tornado.MotorClientSession.with_transaction Тут даже упоминается данная ошибка: When coro or commit_transaction() raises an exception that includes the "TransientTransactionError" error label, with_transaction starts a new transaction and re-executes the coro.
Philipp
Но код это, визуально, подпортило.
Scrooge
Всем привет, кто знает как распаковать найденные данные из коллекции mongodb? Например в sqllite когда мы выводим все данные, то можно потом к ним обращаться через их индексы [0][1]
Danil
Пацаны(и пацанессы если есть) а какие курсы по монге посоветуте ? Или лучше официальных из закрепа нету ?
Jasur Sharofiddinov
any guidelines/documentation to use elasticsearch in mongodb (pymongo)?
КонстантинС
Доброго времени суток. Я подчистил базу файлов, как уменьшить объем базы, сделать шринкирование?
КонстантинС
как пользоваться compact? 2-й день работаю с нереляционной БД
Mark
Всех приветствую! Возник вопрос, как правильно написать условие в запросе с агрегатором? Допустим у меня есть таблица table1, с полями id, a, b, c_id Делаю из неё запрос: db.getCollection('table1').find( {'b': {$exists: true, $eq: null}}); Теперь у меня есть вторая таблица table2, с полями id, d, e, f Хочу их заджойнить: db.table1([ { $lookup: { from: "table2", localField: "c_id", foreignField: "id", as: "col" }, }, ]); Вопрос заключается в том как во второй запрос добавить условие из первого запроса (тот find)??? Подскажите, пожалуйста, тапками не бросайтесь, первый раз запросы в монго пишу
MaryJ💻
Ребята привет! Помогите пожалуйста Почему такая ошибка возникает в Монго, подключаю к кластеру в атласе
MaryJ💻
Ilya
по тексту ошибки говорит что надо ip вашей машины где сервис запущен добавить в whitelist, в монго атлас у них похоже запрещены подключения с произвольного адреса
MaryJ💻
А что такое whitelist ?
Yrys_NM
Всем хай
Yrys_NM
Вопрос такой как искать из текста определение слова но не создавая text index возможно ли?
Ilya
Так он добавлен был , то есть IP твоего места положения ?
если вы запускаете на своей рабочей станции - то да, надо добавить ваш внешний IP, whitelist это должна быть настройка в сервисе atlas, тут еще же может быть проблема в том что из РФ сайт монги недоступна - возможно с серверами атласа та же проблема
Yrys_NM
Просто я новичок простите если тупой вопрос
MaryJ💻
если вы запускаете на своей рабочей станции - то да, надо добавить ваш внешний IP, whitelist это должна быть настройка в сервисе atlas, тут еще же может быть проблема в том что из РФ сайт монги недоступна - возможно с серверами атласа та же проблема
Когда создаю shared, выбираю cloud provider AWS, да , я из России, но у меня vpn в браузере и у них определяет recommended region Frankfurt, может быть vpn работает только на браузер , а на сервера уже не ало? Просто зарегаться дало и кластер создать , а connect(а) нет :(((( че и делать , попробовать может локально сделать базу ? Через Mongo DB compass ? Ее же можно скачать , это десктоп приложение, или тоже не проканает ?)
MaryJ💻
А что за whitelist , не могу найти ))
MaryJ💻
Я скачала без проблем. Поставьте vpn в браузер
MaryJ💻
Благодарю , попробую
MaryJ💻
Буду пробовать локально установить , прокатит или нет.
Ilya
если знакомы с докером то просто поднимите контейнер в нем
MaryJ💻
Блин как так, столько разработчиков пользуются mongoDB, люди то тут причём и политика. Грустно все это.
MaryJ💻
Это да) Просто мне интересно было попробовать 2 варианта. Один проект у меня так и сделан. НО, почему то какая то проблема началась и ошибка точно такая же полезла. Я уже все проект сделала и обвалилась BD. Второй проект решила использовать atlas, там немножко другой подход и поработала с .env переменными, не успев приступить к клиентской части , так как полезла эта ошибка коннекта. Теперь попробую снова локально , незнаю, прокатит или нет. Видимо судьба победить эту ошибку.)))
MaryJ💻
Хм, как вариант)))
MaryJ💻
а какой посоветуете? ниразу не ставила
MaryJ💻
Спасибо, попробую ))
DG
Спасибо, попробую ))
всем добрым людям раздаю vpn во франкфурте очень быстрый и современный
DG
wireguard о вспомнил
DG
абсолютно бесплатно
MaryJ💻
Эх, с локальным тоже уже не АЛО
MaryJ💻
как так, ведь скачено же приложение локально. почему так
MaryJ💻
Вроде все правильно делаю
MaryJ💻
Да, только это и остаётся )))
MaryJ💻
Получилось ))
MaryJ💻
Через свой IP добавленный )
MaryJ💻
Помимо Frankfrut
MaryJ💻
С атласом
Melonges
Возможно ли в mongo сделать чтобы Id документа auto Inc делал и начинался с 1, а не 12 байтовый хэш?
yopp
Пожалуйста, уважайте других участников. В нашей группе не принято «посылать в гугл». Если вы знаете ответ на вопрос или ссылку с ответом на вопрос, то дайте ссылку, а не оценочное суждение
Tony
Возможно ли в mongo сделать чтобы Id документа auto Inc делал и начинался с 1, а не 12 байтовый хэш?
Можно сделать отдельную коллекцию счетчик с идентификатором. А при вставке данных в коллекцию ваших документов делать запрос в коллекцию счетчик и апдейт с инкрементом... Ну так, первое что в голову приходит. Сама монго не умеет такое, насколько знаю
MaryJ💻
local mongodb твоё решение или проксируйся через другие страны
Дело в том , что vpn работает на браузер , и там я как в Германии, в монго даже IP определяет немецкий, но нужно ещё было IP моего устройства запилить , без этого не работало от слова совсем)
MaryJ💻
Да
MaryJ💻
Потому что сервера у монго видимо не дают без моего IP работать , и им пофиг на другую страну которую они определили через vpn браузера )
MaryJ💻
Я одного понять не могу, почему у меня проект на связке node.js + mongo Atlas + mongo compass работают А просто локалхост приложения mongo compass+node.js не работает
MaryJ💻
При этом код идентичен, просто в первом варианте проекта , там логин с паролем и юзернейм через env переменные в uri, а во втором варианте просто ссылка на локалхост mongoDB compass ...
MaryJ💻
поставь себе локально базу и не парься
Дак я и говорю , локально не работает почему то. Сегодня буду разбираться