Vladimir
Это понятно. Но Кафки нету в проекте, боюсь времени под kafkа установку и настройку н кто не даст, поэтому и пытаюсь на pymongo нечто похожее изобразить ) спасибо
Амир
видимо руководству нужно объяснить, что готовые решения лучше наколеночного. Тем более что у вас "каждая секунда на счету"
Vladimir
не для каждой коллекции это подходит. К тому же как вы обрабатыать будет факты изменения и удаления данных?
Хм. Спасибо. Я недавно в mongo полез. Забыл о том, что удаление в таком случае не отследить. Получается в целом необходимо статус приделать, и поле updated в идеале. А далее по значению часа в поле updated в целом можно и партицировать. Спасибо. Ваш вопрос заставил обратить внимание на нужные вещи. И в целом придумать план. Еще раз большое спасибо
Vladimir
Ну да, в целом у меня есть в планах сейчас посмотреть курс по Кафка, разобраться пару раз, настроить и предлагать руководству. Просто без спеца по кафке и без понимания этого всего сложно будет объяснить все аргументированно. Так как если заводить Кафку, то тогда и остальные костыли надо все переделывать под нее и аргументировать выделить на это бюджет
Stargrapefruit
Здравствуйте, стоит ли переезжать с mongo 7.0.8 на mongo 8.0.3? Прочитав просторы интернета написано что 8-ка быстрее чем 7-ка. Для меня можно сказать это главный приоритет. Но бенчмарков нормальных к сожалению не нашёл
Stargrapefruit
Если главный то да
Подводные камни есть?)
Constantine
Vladimir
Можно глупый вопрос ? Мой код names = ["First", "Second", "Third", "Fourth"] now = datetime.now() print('Текущая дата: ', now) import threading def worker(i, names): print(f"Thread {i} started") client = pymongo.MongoClient(uri,maxPoolSize=200) db = client['TestDB'] collection = db['TestCollectionName'] for name in names: result = collection.find({"name": {"$regex": name}}) jsonpath = name + ".json" jsonpath = join('C:/temp', jsonpath) with open(jsonpath, 'wb') as jsonfile: jsonfile.write(dumps(result).encode()) print(f"Thread {i} end") for i in range(4): t = threading.Thread(target=worker, args=(i, names)) t.start() Пытаюсь в несколько потоков считывать с mongodb. Проблема в том, что все 4 файла создаются последовательно, как будто считывать с mongodb может только в один поток. Так ли это ? Скорее всего я где то накосячил, но не понимаю где Спасибо
Vladimir
MongoDB не поддерживает многопоточное чтение из одной и той же коллекции вопрос отпал. Сорри за беспокойство
Амир
Vladimir
это вы где нашли?
гигачат наше все ))
Амир
гигачат наше все ))
ну верьте. Легче ж спросить у чата гопоты чем в доку полезть
Nick
гигачат наше все ))
Не используйте гпт,читайте доки) а по делу идите в доки питона и разбирайтесь в нем, тренируйте нейросеть в голове. А так уже выше сказали в монге чтение из коллекций без блокировок происходит, да и создавать новый клиент на каждый воркер смысла нет, т.к. под ним пул коннектов
Y
Добрый день, подскажите, как отфильтроваться по ключу вот такой структуры users: Object main_users: Array где в списке лежат Object с date_create и нужно отфилтороваться по определенной дате
Kvhqm
Т.е. $gte: new Date(date), $lte: new Date(date)
Kvhqm
В доке найди как правильно
Y
В доке найди как правильно
Да это то понятно, я просто не понимаю, как до данных массива провалиться
mylifestyle
Друзья, как в beanie найти количество уникальных элементов с фильтром? К примеру вот нашел количество не уникальных , но с нужным фильтром result = await ProductOrm.find( ProductOrm.date >= start_day, ProductOrm.date <= end_day, ).count() А вот нашел количество уникальных без фильтра test = await ProductOrm.distinct(key="message_id") А как найти количество уникальных с фильтрацией????
mylifestyle
да я понял, думал на орм как-то
mylifestyle
pipeline склонен к опечаткам
mylifestyle
как sql
mylifestyle
и то и другое я могу писать, но это блевотно
mylifestyle
или есть какой-то орм для монго нормальный?
mylifestyle
для python
Andrey
или есть какой-то орм для монго нормальный?
Да пользуйтесь beanie, он отвратителен, но другого нет.
Andrey
Просто в нем тоже можно и агрегации и все остальное.
mylifestyle
дак вот и получается, что сложные запросы я пишу через pipeline, а простые в beanie очень быстро и просто
Andrey
Главное с beanie не перейти ту грань, когда ради удобных объектов начинаете их также хранить в монге. Тогда ip адреса хранят как строки, и cidr записи как строки и другие моменты.
mylifestyle
вроде пока до такого не дошел)
NO WAR!
Всем привет. Для разработки использую Монго, установленный локально на ноутбуке. Пару дней не коннектился в Компасе к локальным базам. Сегодня попытался и вдруг Authentication failed. При этом не коннектится ни к каким локальным базам. Ни к к admin, ни к базе приложения. Что могло случиться? Разумеется я ничего не менял.
wisp
предоставьте скрин с ошибкой и расскажите как пытаетесь подключиться
wisp
попробуйте вместо localhost написать 127.0.0.1
NO WAR!
попробуйте вместо localhost написать 127.0.0.1
Можно где-то логи ошибок посмотреть на Виндоуз?
wisp
тут скорее всего проблема в том, что вы подключаетесь к серверу, но какие-то данные вводите не правильно. например, пароль
wisp
через mongosh пробовали подключаться?
wisp
mongo "mongo://..."
NO WAR!
тут скорее всего проблема в том, что вы подключаетесь к серверу, но какие-то данные вводите не правильно. например, пароль
Разобрался. Посмотрел конфиг, а там аутентификация не включена. Убрал логин и пароль из строки подключения и все подключилось. Думаю это произошло по причине обновления, которое недавно сделал. Обновил все программы Виндоуз из командной строки. Монго тоже обновился на 8-ю версию. И видимо 8-й встал со своим конфигом, где не включена аутентификация.
Y
Добрый день, подскажите. В этом примере "awards.$": 1 здесь индекс фиксированный, а если я храню индекс, к которому мне нужнообращаться, то как мне правильно забиндить его? db.collection.find({ awards: {$elemMatch: {type: "Nobel", year: 2021}}, name: "Alice" }, { "awards.$": 1 });
Y
Т.е. вопрос, как написать пайплайн, если у меня коллекция хранит поле с массивом и хранит поле с текущим элементом массива
Y
Добрый день, подскажите, у меня есть lookup, который я использую для джоина двух коллекций, как можно сначала отсортироваться в первой коллекции и взять слайс от первой коллекции и для нее джойнить записи из второй коллекции?
Амир
yopp
А можно пример скинуть?
Здравствуйте! Вы можете добавить pipeline в сам $lookup для дополнительной обработки перед присоединением документов https://www.mongodb.com/docs/manual/reference/operator/aggregation/lookup/#use-multiple-join-conditions-and-a-correlated-subquery
Y
Подскажите, а как после lookup понять сколько документов будет в результате?
Vladimir
См count, size, в зависимости от того, что хочешь посчитать
Y
См count, size, в зависимости от того, что хочешь посчитать
Мне как-то нужно посчитать размер joinResult после луукапа
Y
Подскажите, возможно ли использовать https://www.mongodb.com/docs/manual/reference/method/db.collection.countDocuments/#mongodb-method-db.collection.countDocuments с pipline ? Или он рассчитан на простой запрос?
Y
Задача какая у вас вцелом?
У меня есть коллекция, а ее джойню с другой коллекцией через lookup, результаты в joinResult пишу. Мне нужно оценить количество документов
Y
Мне, вообще говоря для пагинации это нужно
Nick
Мне, вообще говоря для пагинации это нужно
Вам либо два запроса либо $facet
Y
Вам либо два запроса либо $facet
Два запроса что имеете ввиду?
Nick
Два запроса что имеете ввиду?
Один на количество, второй на получение данных
Y
Вот не понима, как количество посчитать
Y
Джоин то я написал
Y
я стейджами скипаю нужное количество, по 500 документов скажем. Только мне нужно понимать, на сколько страниц это все разобьется
Nick
Вот не понима, как количество посчитать
в конце стедж $count или явно через группировку
Y
в конце стедж $count или явно через группировку
А количество документов куда попадает? я результаты дальше из курсора тяну
Y
Один явный, на результат соединения, другой на количество
Y
такой же
Y
@yatoba верно?
Nick
@yatoba верно?
да. Либо опять же посмотреть на $facet чтобы сделать типа два в одном
Y
да. Либо опять же посмотреть на $facet чтобы сделать типа два в одном
Спасибо, большое, вроде получилось. C $facet позже разбирусь.
Y
да. Либо опять же посмотреть на $facet чтобы сделать типа два в одном
Подскажите, а вот у меня lookup пишет результат соединения в joinResult как правильно написать { $match: {'$joinResult': { $exist: True } } }, { $count: "high_scores" }
Y
В привязке к переменной