Nick
Binary.CreateFromBase64
А под вытащить что имелось в виду? Я так понимаю получить док получили и там бинарь, вот он и есть
Nick
Распаковать бинарник. Из доки я это поле получаю
А ну это уже не про монгу, что там в этом бинаре и в каком формате известно лишь вам
Kvhqm
и кто ошибку кидает и какая она?
Монга и выдаёт ошибку, что мол туда низя пушить айди из других коллекций
Nick
Через драйвер монгус
вот сделайте вручную вставку
Nick
А почему тогда у меня это приводит к ошибке, если пушу в док айди не из той коллекции, которая указана в схеме?
https://www.mongodb.com/docs/manual/reference/database-references/#database-references To resolve DBRefs, your application must perform additional queries to return the referenced documents. Some MongoDB drivers provide helper methods to enable DBRefs to be resolved into documents, but it doesn't happen automatically. DBRefs provide a common format and type to represent relationships among documents. The DBRef format also provides common semantics for representing links between documents if your database must interact with multiple frameworks and tools. это все отдается на откуп драйверу/орм/одм, предоставляя лишь общий формат дял унификации, чтобы каждый разработчик не выдумыла свои способы линковать для нового дравера. Сама монга никак не контрлирует связанность доков
Светлячок
Всем привет, подскажите что нужно добавить в строку подключения что бы я мог управлять всеми базами а не только admin? mongodb://admin:admin@localhost:27017/
Nick
Всем привет, подскажите что нужно добавить в строку подключения что бы я мог управлять всеми базами а не только admin? mongodb://admin:admin@localhost:27017/
а что мешает? переключаетесь на другую БД если есть права. дял этого нет необхоидмости чтото писать в урле
Светлячок
Если спрашиваю, то наверное мне это нужно. Нашел как делать это, добавить ?authSourse=admin
Алексей
нужно права выдать на базу пользователю
Алексей
https://www.mongodb.com/docs/manual/reference/method/db.grantRolesToUser/
Светлячок
Алексей
?authSourse=admin не дает права читать другие базы, это деректива указывает в какой базе искать пользователя user\pass которого вы указывается при подключении
Светлячок
Просто вопрос не правильно поставил
Y
Подскажите, у меня вот такой пайплайн {'$and': [{'created_at': {'$gte': datetime.datetime(2024, 6, 27, 0, 0)}}, {'created_at': {'$gte': datetime.datetime(2024, 6, 27, 0, 0)}}]} Запись, вот с такой датой created_at 2024-06-27T12:06:06.178+00:00 не попадет в выборку Как переписать пайплан, чтобы попала? Я понимаю, что мне нужно обрезать время (сделать truncate), но не понимаю, как переписать pipline
Y
А зачем два одинаковых условия?
Особенности фильтрации, это пример. В боковом гриде на интерфейсе эти даты, это дата начала периода и дата окончания, которые выбирает пользователь.
Y
Тут вопрос почему два gte
А, это опечатка, там lte, gte
Y
Сама суть вопроса не меняется
Y
В любом случае показывайте какое значение получится в параметре который полетит в бд, мне например ничего не говорит то что там сейчас написано
В БД при выполнении запроса должны подобраться даты 2024-06-27T12:06:06.178+00:00, т.е. как-то их надо обрезать до значения 2024-06-27T00:00:00.000+00:00 в процессе выполнения запроса
Nick
Как-то так https://mongoplayground.net/p/GT8-0sVIITc
Вернет только когда время строго равно полночь 27 числа. Так и задумывалось или в lte надо на lt и полночь 28 число указать
Y
Вернет только когда время строго равно полночь 27 числа. Так и задумывалось или в lte надо на lt и полночь 28 число указать
Не совсем. Смотрите. Надо подправить запрос. Задумывается, что пользователь выбирает в фильтре lte и gte. Он может выбрать дату начала периода и окончания периода одну и ту же. Сам я понимаю,что в моем примере запись не вернется, потому что она не попадает в период, так как сам период фактически одна точка. Но в процессе выполнения запроса я ожидаю, что моя запись в таблице по времени обнулится и удовлетворит условиям
Y
Я просто не понимаю, как нужно подправить запрос. Например в постгресе или оракле я бы написал фильр where trunc(create_at) >= date_begin and trunc(create_at) <= date_end
Y
Я запись с атрибутом create_at = 2024-06-27T12:06:06.178+00:00 подобралась
Y
Раз работе с датами для енд добавляйте сутки и используйте lt
Сутки добавить не проблема... Проблема в питоне обработать такой кейс:) Но кажется я понял, что тут аналогично запросу из pg написать не получится
999
что значит Add Tags для чего они нужны и почему я не могу без них нажать Next
999
не можете без ввода имени проекта
я вводил и все равно не мог потом решил тупо написать key и value
Kalik
Приветствую всех, буду рад помощи, извиняюсь если оффтоп Есть монгодб с 100к записями и есть крон таск (node-cron модуль) который запускает каждый час обработку этих 100к записей. Сама обработка занимает час. Подскажите можно ли как то засплитить (или спараллелить) этот процесс чтобы эту обработку можно было выполнять не каждый час, а каждые 15 минут Условно будет параллельно несколько процессов которые забирают на себя обработку 10к записей каждая Что посоветуете использовать или сделать? Сама обработка - это запрос по апи получение данных по каждой записи и при надобности изменение записи в БД
Vise
Хранить фотографии в бд наверно плохая идея? Лучше в папке сервера ?
Nick
Хранить фотографии в бд наверно плохая идея? Лучше в папке сервера ?
да, или на какойнить внешней файлопомойке аля s3
Kalik
извините за оффтоп
Constantine
Хранить фотографии в бд наверно плохая идея? Лучше в папке сервера ?
Лучше смотря в каком плане. По производительности обычно лучше, а то что у тебя оно хранится отдельно от сущности на самом деле - хуже
Nick
Лучше смотря в каком плане. По производительности обычно лучше, а то что у тебя оно хранится отдельно от сущности на самом деле - хуже
надо только для себя понять, само изображение является ли частью сущности. Не является ли ссылка на картинку этой самой частью?
Y
Подскажите, у mongodb AsyncIOmotor есть объект курсор
Y
Но как я, понял, по аналогии с другими движками баз данных в нём нет fetch many?
Y
Или может быть есть что-то аналогичное и я просто не нашёл?
Vise
А блин это и есть эта группа. 😁 Я ночью писал и не обратил внимание
Y
А блин это и есть эта группа. 😁 Я ночью писал и не обратил внимание
да, у меня с утра возник тоже вопрос на что намек?😅
Nick
Но как я, понял, по аналогии с другими движками баз данных в нём нет fetch many?
Что такое fetch many? Гуглешь показал что это питоновский метод в какойто либо
Y
Что такое fetch many? Гуглешь показал что это питоновский метод в какойто либо
Ну так и есть, он в разных движках к базам данных есть, pg Оракл, sqlite...
Y
В mongodb чего-то аналогичного не нашел
Nick
В mongodb чего-то аналогичного не нашел
Не в монго, а в либе питона. Это функционал либ, отделяйте это от баз данных и задавайте вопросы которые имеют отношение к монге а не к выбранной либе по которой надо вопрлсы задавать как правило на гитхабе
Alexander
Ну так и есть, он в разных движках к базам данных есть, pg Оракл, sqlite...
Да тут он тоже есть. Через batch_size. Просто скрыт от твоего взора за ненадобностью.
Ric
Hi I from india . Nice to meet you all. I think you guys are from Russia
Игорь
Всем привет! может ли кто нибудь помочь с запросом. Вот запрос на каунт, по очередям, можно ли сделать каунт отдельно по одной очереди? queue: send_status ? Спасибо
Егор
Добрый день! Раньше из бд работал только с sqlite, сейчас перехожу на mongo db Подскажите как лучше работать с моного через драйвер мотор, какой вариант лучше ? почему? 1-й вариант держать один коннект для всей программы db = AsyncIOMotorClient(MONGO_CONNECTION_PATH) @USER.post('/user_name') async def user_name(): collection = db['Users']['users'] data = await collection.find_one({'_user_id': user_id}) return data['name'] @USER.post('/user_count') async def user_count(): collection = db['Users']['users'] data = await collection.find({}) return len(list(data)) 2-ой вариант открывать и закрывать коннект под каждый запрос @USER.post('/user_name') async def user_name(): db = AsyncIOMotorClient(MONGO_CONNECTION_PATH) collection = db['Users']['users'] data = await collection.find_one({'_user_id': user_id}) db.close() return data['name'] @USER.post('/user_count') async def user_count(): db = AsyncIOMotorClient(MONGO_CONNECTION_PATH) collection = db['Users']['users'] data = await collection.find({}) db.close() return len(list(data))
999
добрый день! я написал модели и запустил бд, все работает и я получаю данные из бд, но теперь мне пришла в голову идея добавить ещё одно поле (свойство) в каждый объект в коллекции (массив объектов в виде JSON) что мне следует сделать?
Nick
добрый день! я написал модели и запустил бд, все работает и я получаю данные из бд, но теперь мне пришла в голову идея добавить ещё одно поле (свойство) в каждый объект в коллекции (массив объектов в виде JSON) что мне следует сделать?
на чем модель писали (язык, орм)? поле добавить, чтобы оно именно в базе у каждого документа было, или оно необязательное по сути и главное в момент работы с доком с ним можно было взаимодействовать
Nick
на mongoose а я могу просто отредактировать модель , потом удалить все данные и добавить в джсон новое свойство и заново импортнуть?
да вполне. На монгусе можно просто добавить полей и указать ему дефолтное значение, тогда в базе ничего делать не потребуется. Так же можно было бы написать апдейт, который добавит всем существующим докам новое поле или изменит значение существующего
999
хорошо, а вот где можно посмотреть модели которые создаются? я так понял что если такой модели ещё нет, то монгусь используя model() создает новую модель так вот если я прав то мне интересно где эти модели сохраняются и где я могу посмотреть их?
максим
напиши в лс
Nick
хорошо, а вот где можно посмотреть модели которые создаются? я так понял что если такой модели ещё нет, то монгусь используя model() создает новую модель так вот если я прав то мне интересно где эти модели сохраняются и где я могу посмотреть их?
то что сейчас в вашем коде и есть модель, других нет. В базе сохранется документ, заполненный по этой модели. Глянуть структуру документов в бд в монгусе кроме как докопаться до драйвера хз даже, а так взять какойнить компасс или другой ui просмотрщик, который с монгой работает. Ну или чтоб наверняка через mongoshell
999
тут написано что это аналитика на основе того что было загружено сюда (т.е. мой джсон файл который я импортнул) это compass если что
Maxmudjon
ребят проект разбиваю к микросервис и собираю на докер, но каждом микросервисе есть обращение к монго через орм монгус, является ли хорошим тон создавать схема к каждому докер? или есть лучший способ для этого, заранее спасибо за помощь
Maxmudjon
извиняюсь за тафталогию😐
Nick
mongoose schema
Эм, а как она может быть одна? Она по определению микросервисов разная для хранения разных доменных данных