dnacd 🦜
Всем добрый день, подскажите с связью one-to-many с помощью pymongo через ObjectId, как это правильно делать?
При создании документа добавляешь поле related_field ame_id : objectid И потом агрегируешь
Yehor
не совсем понятно, но спасибо попробую еще покопать
dnacd 🦜
не совсем понятно, но спасибо попробую еще покопать
я ща те найду в старых проектах пример
dnacd 🦜
если найду
Yehor
буду очень благодарен
dnacd 🦜
буду очень благодарен
https://learnmongodbthehardway.com/schema/schemabasics/
Yehor
спасибо большое
Eva🇺🇦
если филдом является объект, поиск по этому филду долгий и нельзя индексировать его, да?
Anton
Всегда задавался вопросом - если ObjectId это хэш, то как мы можем так быстро получить timestamp с этого хэша🤔🤔
Anton
Ведь процесс формирования хэша односторонний - хэш можно сформировать из исходных данных, а обратное невозможно за разумное время
yopp
Всегда задавался вопросом - если ObjectId это хэш, то как мы можем так быстро получить timestamp с этого хэша🤔🤔
ObjectId это грубо говоря UUIDv4, это псевдослучайный идентификатор, частью которого является какая-то временная отметка
Илья
Всегда задавался вопросом - если ObjectId это хэш, то как мы можем так быстро получить timestamp с этого хэша🤔🤔
первые 4 байта ну или 8 символов ObjectId, это unix time в секундах закодированное в 16-ричной системе счисления
Влад
Привет. Как отфильтровать из подобного листа "prices": [ { "dist_id": "2", "price": 170.1303, "quantity": 31, "delivery_days": 3, "warranty": 12 }, { "dist_id": "1", "price": null, "quantity": null, "delivery_days": 0, "warranty": 12 } ], только объекты у которых есть price и quantity, а далее получить объект с наименьшей price? Всем спасибо.
Тимур
из-за чего такая ошибка на сайте монго?
Тимур
понял, спасибо
Null
5.0.9 (May 31) • 4.4.15 (June 21) ◦ 6.0.0-rc11 (Jun 24) ℹ️ Вышли версии 5.0.9, 4.4.15, 4.2.21 и 6.0.0-rc11 ℹ️ Добавлено зеркало официального репозитория: https://mirror.db-ai.co • Зеркало официального репозитория доступное из СНГ • Документация Stable: 5.0.9 (May 31), Unstable: 6.0.0-rc11 (Jun 24) Bugfix: 4.4.15 (June 21), Legacy: 4.2.21 (Jun 21) ☠️ 4.0.28 (Apr '22) 3.6.23 (Mar ’21), 3.4.24 (Jan ‘20)
Bro
M1 поддержку не добавили?
yopp
M1 поддержку не добавили?
Насколько я знаю в 6.0 будет aarch64 для макоси
yopp
монга для js использует firefox esr, а туда поддержку apple silicon добавили относительно недавно
yopp
https://fastdl.mongodb.org/osx/mongodb-macos-arm64-6.0.0-rc11.tgz
yopp
А что, с розеттой какие-то проблемы?
Alexander
А что, с розеттой какие-то проблемы?
у меня на 5.0.8 вообще никаких
Alexander
но и база маленькая)
Bro
А что, с розеттой какие-то проблемы?
Не замечал. Но нативно все равно лучше.
yopp
Добавил зеркало документации: https://docs.db-ai.co/docs/manual/
yopp
Вы имеете ввиду TLS сертификат? Если да, то подскажите пожалуйста какой у вас браузер и как именно он на сертификат ругается?
yopp
Спасибо, но пока так, да. У 10gen очень сложный и местами сломанный пайплайн для сборки документации, сил хватило только на доку к серверу. Для шелла и утилит попробую собрать через пару недель
Calipso
привет 👋🏻 у кого-нибудь есть экземпл как создавать структуру хранения данных монго в фаст апе?
Calipso
Calipso
окей, попробую отразить задачу более детально. мне нужно связать в compose два микросервиса: fastapi и mongodb. необходимо сделать так, чтобы при первом запуске compose создавалась коллекция для хранения данных в mongodb
Calipso
я делал этот на других бд: postgres, mysql, но с mongodb не могу разобраться
Alexander
окей, попробую отразить задачу более детально. мне нужно связать в compose два микросервиса: fastapi и mongodb. необходимо сделать так, чтобы при первом запуске compose создавалась коллекция для хранения данных в mongodb
В отличи от sql в монге не происходит ошибок при записи в несуществующие коллекции и базы, они создаются при первой записе. Поэтому ты просто пишешь туда.
Calipso
о как! спасибо за пояснение. попробую
Alexander
Структуру ты можешь хранить в словаре, или в через BaseSettings в .env
Alexander
о как! спасибо за пояснение. попробую
Ты можешь написать скрипт, который будет создавать индексы в нужных тебе коллекциях, при старте ФА. Но обрати внимание, что например pymongo создаёт ленивое подключение, и просто инициация бд или коллекции не создаёт объектов в базе. Т.е. надо обязательно записать документ в базу, чтобы база или коллекция создались
Alexander
спасибо
Посмотри в сторону ODM возможно там уже решено часть задач
Calipso
я нашёл пример. думаю он мне поможет https://github.com/AtamanKit/fastapi_users_docker
..
Добрый день, можете пожалуйста помочь с установкой получаю ошибку mongod.service: Main process exited, code=exited, status=14/n/a
..
список устанавливаемых пакетов на ubuntu 20. mongodb-database-tools_100.1.0_amd64.deb mongodb-org-database-tools-extra_4.4.0_amd64.deb mongodb-org-server_4.4.0_amd64.deb mongodb-org-tools_4.4.0_amd64.deb mongodb-org_4.4.0_amd64.deb mongodb-org-mongos_4.4.0_amd64.deb mongodb-org-shell_4.4.0_amd64.deb
Alexander
Ребят, а если у вас есть модель с множеством relations, для примера House: { owner: ObjectId, books: [ObjectId], pets: [ObjectId] } И вы хотите получить все Дома, в которых такой-то овнер, такие-то книги, и такие-то животные, то Монго эту проблему решить не способна получается? Я должен сначала запросить все House, сделать population, и уже на уровне приложения отфильтровать нужные?
Bro
Там есть $lookup
Sherlock
raise ServerSelectionTimeoutError( Почему не подключается к серверу?
Alexander
Вам проще сначала загрузить нужных owner и pet, а потом по их _id найти нужные дома
Я тоже так думал. Но если представить что у меня в модели House очень много разных свойств(рефов), то мне нужно делать очень много запросов к ним по отдельности, прежде чем я соберу список House который мне нужен. Хотелось бы что бы за эту логику отвечала база, а не приложение. Вообще мне кажется что запрашивать данные сразу фильтруя по разным рефам - это довольно базовый механизм, вместо того что бы делать это в приложении.
Sherlock
raise ServerSelectionTimeoutError( pymongo.errors.ServerSelectionTimeoutError: ac-qvnojit-shard-00-02.i1galhp.mongodb.net:27017: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate has expired Как можно исправить
yopp
notBefore=Jun 24 14:18:17 2022 GMT notAfter=Sep 22 14:18:16 2022 GMT Проверьте что у вас на машине откуда вы подключаетесь часы верно установлены
yopp
Я тоже так думал. Но если представить что у меня в модели House очень много разных свойств(рефов), то мне нужно делать очень много запросов к ним по отдельности, прежде чем я соберу список House который мне нужен. Хотелось бы что бы за эту логику отвечала база, а не приложение. Вообще мне кажется что запрашивать данные сразу фильтруя по разным рефам - это довольно базовый механизм, вместо того что бы делать это в приложении.
Если вы не знаете _id объектов для фильтрации, вам всё равно придётся сначала найти эти объекты и получить их id. В концепции любого хранилища это будут подзапросы, явные или нет. Так что это нормальное поведение. Но похоже что у вас частный случай паттерна Entity Value Attribute. https://t.me/mongodb_ru/87488. Поищите по группе по словам value attribute, там будут разные кейсы
Sherlock
raise ConfigurationError(str(exc)) pymongo.errors.ConfigurationError: The resolution lifetime expired after 21.620 seconds: Server 192.168.67.9 UDP port 53 answered The DNS operation timed out.; Как можно это исправить?
Via funky
Привет ребят. Вопрос, насчет агрегации... Как сравнить данные "строки" после unwind'a, с элементами массива, который был собран в предыдущем шаге агрегации через addfield ? Такое чувство что массив не виден для сравнения... Пытаюсь сделать через $match так: { "string":{$elemMatch:{$eq:"$arrayofstrings"}} }
Anonymous
Ребят, а можно вопрос не по теме чата?
Антон
Всем привет! Экспериментирую с проектом https://github.com/mohamedsamara/mern-ecommerce поднял его дома на компе с виндой ,всё ок. На удалённом сервере билдится, но при старте ругается на /server/routes/api/product.js:35 productDoc?.brand === null || productDoc?.brand?.isActive === false; ^ SyntaxError: Unexpected token '.' ранее productDoc определяется так: const productDoc = await Product.findOne({ slug, isActive: true }).populate( { path: "brand", select: "name isActive slug", } ); захожу в монгодб на сервере, есть нужная база, захожу в базу, есть таблицы (коллекции), в чём может быть проблема?
🅰️nimeCoder
Возможно проблема в старой версии ноды
🅰️nimeCoder
Вполне возможно что это 8-12 нода, и она не поддерживает ?.
Антон
Вполне возможно что это 8-12 нода, и она не поддерживает ?.
да, оно самое, уже разобрался, но всё равно большое спасибо)
ZDev | Разработчик
Как установить время жизни документа? И как его, если что можно обновить?
ZDev | Разработчик
странный вопрос, о чем ты
Почему же странный? У документа, как читал, можно установить время "жизни", затем он удаляется.
ZDev | Разработчик
Но я незнаю, как его обновлять.
Илья
Почему же странный? У документа, как читал, можно установить время "жизни", затем он удаляется.
https://www.mongodb.com/community/forums/t/update-ttl-indexed-field-expiry-date-later/12893 https://www.mongodb.com/docs/manual/tutorial/expire-data/
yopp
403 Error
Если не доступен https://www.mongodb.com/docs/manual/tutorial/expire-data/ То зеркало https://docs.db-ai.co/docs/manual/tutorial/expire-data/
ZDev | Разработчик
Anonymous
Тхах) На бесплатном хостинге держат. Не удивительно