Vladimir
Это понятно. Но Кафки нету в проекте, боюсь времени под kafkа установку и настройку н кто не даст, поэтому и пытаюсь на pymongo нечто похожее изобразить )
спасибо
Амир
видимо руководству нужно объяснить, что готовые решения лучше наколеночного. Тем более что у вас "каждая секунда на счету"
Nick
Nick
Vladimir
Ну да, в целом у меня есть в планах сейчас посмотреть курс по Кафка, разобраться пару раз, настроить и предлагать руководству.
Просто без спеца по кафке и без понимания этого всего сложно будет объяснить все аргументированно.
Так как если заводить Кафку, то тогда и остальные костыли надо все переделывать под нее и аргументировать выделить на это бюджет
Nick
Stargrapefruit
Здравствуйте, стоит ли переезжать с mongo 7.0.8 на mongo 8.0.3?
Прочитав просторы интернета написано что 8-ка быстрее чем 7-ка. Для меня можно сказать это главный приоритет. Но бенчмарков нормальных к сожалению не нашёл
Constantine
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 не поддерживает многопоточное чтение из одной и той же коллекции
вопрос отпал. Сорри за беспокойство
Амир
Амир
ну верьте. Легче ж спросить у чата гопоты чем в доку полезть
Nick
Не используйте гпт,читайте доки) а по делу идите в доки питона и разбирайтесь в нем, тренируйте нейросеть в голове. А так уже выше сказали в монге чтение из коллекций без блокировок происходит, да и создавать новый клиент на каждый воркер смысла нет, т.к. под ним пул коннектов
Y
Добрый день, подскажите, как отфильтроваться по ключу вот такой структуры
users: Object
main_users: Array
где в списке лежат Object с date_create и нужно отфилтороваться по определенной дате
Kvhqm
Kvhqm
Т.е. $gte: new Date(date),
$lte: new Date(date)
Kvhqm
В доке найди как правильно
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
Просто в нем тоже можно и агрегации и все остальное.
mylifestyle
дак вот и получается, что сложные запросы я пишу через pipeline, а простые в beanie очень быстро и просто
Andrey
Главное с beanie не перейти ту грань, когда ради удобных объектов начинаете их также хранить в монге. Тогда ip адреса хранят как строки, и cidr записи как строки и другие моменты.
mylifestyle
вроде пока до такого не дошел)
NO WAR!
Всем привет.
Для разработки использую Монго, установленный локально на ноутбуке. Пару дней не коннектился в Компасе к локальным базам. Сегодня попытался и вдруг Authentication failed. При этом не коннектится ни к каким локальным базам. Ни к к admin, ни к базе приложения.
Что могло случиться? Разумеется я ничего не менял.
wisp
предоставьте скрин с ошибкой и расскажите как пытаетесь подключиться
NO WAR!
NO WAR!
wisp
попробуйте вместо localhost написать 127.0.0.1
NO WAR!
wisp
тут скорее всего проблема в том, что вы подключаетесь к серверу, но какие-то данные вводите не правильно. например, пароль
wisp
через mongosh пробовали подключаться?
wisp
mongo "mongo://..."
Y
Добрый день, подскажите. В этом примере "awards.$": 1 здесь индекс фиксированный, а если я храню индекс, к которому мне нужнообращаться, то как мне правильно забиндить его?
db.collection.find({
awards: {$elemMatch: {type: "Nobel", year: 2021}},
name: "Alice"
}, {
"awards.$": 1
});
Y
Т.е. вопрос, как написать пайплайн, если у меня коллекция хранит поле с массивом и хранит поле с текущим элементом массива
Y
Добрый день, подскажите, у меня есть lookup, который я использую для джоина двух коллекций, как можно сначала отсортироваться в первой коллекции и взять слайс от первой коллекции и для нее джойнить записи из второй коллекции?
Амир
Y
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
Подскажите, возможно ли использовать https://www.mongodb.com/docs/manual/reference/method/db.collection.countDocuments/#mongodb-method-db.collection.countDocuments с pipline ? Или он рассчитан на простой запрос?
Nick
Y
Задача какая у вас вцелом?
У меня есть коллекция, а ее джойню с другой коллекцией через lookup, результаты в joinResult пишу. Мне нужно оценить количество документов
Y
Мне, вообще говоря для пагинации это нужно
Nick
Y
Y
Вот не понима, как количество посчитать
Y
Джоин то я написал
Y
я стейджами скипаю нужное количество, по 500 документов скажем. Только мне нужно понимать, на сколько страниц это все разобьется
Nick
Y
Y
Один явный, на результат соединения, другой на количество
Y
такой же
Y
@yatoba верно?
Nick
@yatoba верно?
да. Либо опять же посмотреть на $facet чтобы сделать типа два в одном
Y
Y
В привязке к переменной