Rodion
Уважаемые знатоки, скажите, актуальная версия MongoDb уже может гарантировать консистентность (C из CAP) при использовании в распределенной системе?
Андрій
Привет, дайте совет работы с бд, впервые работаю. Написал мобильное приложение и хочу для категорий пользователей выводить разные магазины они закреплены за пользователями и товары, например 1 видит 5 магазинов с товарами, второй другие 5 и тд. ВОПРОС: как в бд правильно это организовать для каждого пользователя своя коллекция с товарами или прям все товары в одной коллекции а при запросе просто фильтр товаров что принадлежат конкретному магазину? И влезет в 1 коллекцию к примеру 15000 товаров(описание просто 10 строк текста к примеру)
Андрій
Обычная тема для ролей. Юзеру дается роль, а магазинам и товарам указывается какие роли их видят. Или у товаров указывается например категория и роль уже назначается на категорию - тут уже вопрос только как именно это выстраивать
Спасибо, погуглю про роли в работе с монго. А вот про делать все в 1 коллекции или для каждой роли разные коллекции данных? Или тут можно и так и так а мне уже решить как лучше для приложения?
idk
Спасибо, погуглю про роли в работе с монго. А вот про делать все в 1 коллекции или для каждой роли разные коллекции данных? Или тут можно и так и так а мне уже решить как лучше для приложения?
Все в одной, избыточно делать на каждую роль свою коллекцию, при чем если есть возможность менять визабилити, лишняя морока будет
zEvilz
всем привет. есть еще какие зеркала монги для рф кроме того, что в закрепе? 2 пакета чет не находит там Err:1 https://mirror.db-ai.co/apt/debian buster/mongodb-org/5.0/main amd64 mongodb-database-tools amd64 100.5.4 404 Not Found [IP: 193.200.16.49 443] Err:2 https://mirror.db-ai.co/apt/debian buster/mongodb-org/5.0/main amd64 mongodb-mongosh amd64 1.5.1 404 Not Found [IP: 193.200.16.49 443]
zEvilz
У Яндекса вроде было
не нашел у них. поставил пакетами
Paul
Всем привет! Пытаюсь подключиться к БД, но ловлю ошибку. В чем может быть проблема? Или это общий блок на рашку за вторжение?
Paul
Еще вопросик имеется. Можно-ли как-то генерировать _id только в числовом формате? Как я понимаю, он просто хешируется, но при поиске 'findById' не отдаёт нужного результата. Тогда как можно привести число в ObjectID?
Paul
Может есть конкретная ссылка?
Alexandrr
Может есть конкретная ссылка?
https://www.google.com/search?q=set%20custom%20_id%20mongodb&ie=utf-8&oe=utf-8&client=firefox-b-m
Демидовец
привет достаю данные: const materials = await MaterialModel.aggregate([ { $lookup: { from: "comments", localField: "_id", foreignField: "material_id", as: "comments", pipeline: [ { $project: { _id: 1, }, }, ], }, }, ]); на выходе получаю: [ { // прочие поля "comments": [ { "_id": "62dd23636ba916f5ba2b5555" }, { "_id": "62dd23636ba916f5ba2b5556" } ] }, ] как сделать так чтобы в "comments" был массив строк из id, а не массив объектов: "comments": [ "62dd23636ba916f5ba2b5555", "62dd23636ba916f5ba2b5556" ]
Демидовец
пока только вариант через js, но пахнет костылем
Yaroslav
Тебе проще перебрать уже готовый массив в materials
Демидовец
Тебе проще перебрать уже готовый массив в materials
спасибо, решил так и сделать materials.map((material) => ({ ...material, comments: material.comments.map((comment) => comment._id), }))
Yaroslav
спасибо, решил так и сделать materials.map((material) => ({ ...material, comments: material.comments.map((comment) => comment._id), }))
Можно заморочится и на стороне mongodb сделать, но много абстракций писать надо
Дима
Как сделать чтобы вернулось не более 200 последних объектов?
Nick
Как сделать чтобы вернулось не более 200 последних объектов?
именно последних? или не больше 200? Просто ограничить можно через limit А вот с последними - сделать инверсную сортировку, лимитировать и потом опять сортировку в исходный порядок
Pasha
Ребята,всем привет. Не могли бы вы немного подсобить. Впервые столкнулся с понятием роли, и не могу понять как поступить. Мне по сути надо создать классического админа (чтение - удаление) в одной базе, как мне правильно сформировать db.createRole ?
Дима
Как через updateMany обнулить массив?
Дима
$set: { array: [] }
с кода не работает, массивы не обновляет, а через консоль работает
Max
Всем привет. Есть модель User и Project. У User есть поле favourites - массив из ref Project (ObjectID). Как мне перед удалением Project удалить его reference у всех юзеров из поля favourites? Слышал про pre и post, но так и не понял как их использовать для моего случая.
winterfall
Pre & Post - история из монгуза. Это мидлвары, которые выполняются перед и после определённого действия - того, на какое настроишь мидлвару В принципе, звучит как действенный вариант, если монгуз есть в твоём стеке)
winterfall
Не могу ничего подсказать по поводу удаления ON CASCADE, или типа того, лучше в гугл обратиться. Но если что, всегда есть вариант камнем и палкой - в достать все связанные ID, и удалить их напрямую
Олег
Здравствуйте подскажите пожалуйста, если массив (подчёркнутый красным) имеет значения он по ним находит но если массив со значениями пустой, мне монго возвращает пустой массив, могу ли я как-то сделать так что когда массив значений пустой оно не обращало на него внимание и искало по категория(подчёркнуто зелёным), спасибо))
yopp
Привет! Я обновил зеркало оффрепозитория до актуальной версии 6.0. Плюс добавил инструкции по установке пакетов и зеркало pgp ключей. * Репо: https://mirror.db-ai.co/ * Инструкции: https://mirror.db-ai.co/_/install * Ключи: https://mirror.db-ai.co/pgp/ (зеркало pgp.mongodb.com) Пока инструкция только для 6.0, чуть позже добавлю для 5 и 4 версий. Пока вы можете заменить 6.0 на 5.0 во всех примерах. Если у вас возникают проблемы с репозиторием, проверьте что на сервере добавлены pgp ключи. Для Red Hat систем потребуется изменить путь к pgp ключам с https://www.mongodb.org/static/ на https://mirror.db-ai.co/pgp/
Eфим
всем привет, подскажите как искать в питоне конструкцию {'_id': ObjectId('62d42b36798c6d3866c94242'), 'e': 34900163, 'factors': {'f': 910, 'v': 3.85, 'p': 0, 'pt': '0'}, 'countAll': 124} мне надо найти
Eфим
factors ''f''
Eфим
ev_collect2 = (collectinS.find_one({'e': ev_indi, 'factors':{'f':fac}}))
Eфим
вот так пробую но не получается
Eфим
тоже не проходит
Nick
только поиск по ключу factors, вложенный поиск невозможен. либо используй дополнительно у монгодб операторы исключения
это питон такое не дает сделать? обычны запрос отрабатывает как раз в дот нотации
Alexandrr
это питон такое не дает сделать? обычны запрос отрабатывает как раз в дот нотации
результатом поиска из монго первичные ключи верхнего уровня же только а дальше уже с помощью языка парсить что нужно
Nick
результатом поиска из монго первичные ключи верхнего уровня же только а дальше уже с помощью языка парсить что нужно
У человека был вопрос как сформировать запрос, так что думаю часть с разбором ответа пока не предмет обсуждения.
Maxim
всем привет не могу скачать ключи из директории /pgp/ error: 502
Maxim
подскажите пожалуйста решение
Alexandrr
Нет
значит, как выше написал пробуй
Andrey
значит, как выше написал пробуй
до тебя правильно написали
yopp
подскажите пожалуйста решение
сломалось с нашей стороны, сейчас починю
yopp
подскажите пожалуйста решение
пожалуйста, попробуйте ещё раз
Pavel
Коллеги, подскажите пожалуйста, как правильно настроить монгу =))) что то она у меня захлебывается, у меня много агрегирущих запросов и всего один инстанс. С чего бы мне начать? Где почитать про планы оптимизаций, как бы выяснить правильность построения запросов? =)) киньте книгой/ссылкой, что то по документации сделал что смог, расставил индексы, но как все тюнить что то не очень пока понимаю =))
Pavel
https://www.mongodb.com/docs/manual/tutorial/optimize-query-performance-with-indexes-and-projections/ https://www.mongodb.com/docs/manual/core/query-optimization/ https://www.mongodb.com/basics/best-practices
да вроде изучил уже, спасибо. А монгу желательно чтоб она в кластере работала или не обязательно и какой примерно порог для одной ноды? У меня бд маленькая, не больше 2Гб, но её тушит ом килер на сервере с 20 свободными гигами оперативки
Zahra
Hello everyone
Philipp
Ребят, запускаю стресс тесты и PyMongo начинает абортить транзакции. Вроде как, проблема в недостаточном transactionLifetimeLimitSeconds. Я использую образы bitnami/mongodb-sharded. Как я понял из доков не шардовой монги, можно увеличить время транзакции при старте контейнера используя переменную среды - MONGODB_EXTRA_FLAGS='--transactionLifetimeLimitSeconds=480'. Но с шардом такое не прокатывает. Как быть?
yopp
да вроде изучил уже, спасибо. А монгу желательно чтоб она в кластере работала или не обязательно и какой примерно порог для одной ноды? У меня бд маленькая, не больше 2Гб, но её тушит ом килер на сервере с 20 свободными гигами оперативки
Если на сервере есть другие сервисы, особенно редис то это может быть симптомом нехватки виртуальной памяти. Редис из-за снепшотов резервирует под себя большие объемы, это может приводить к активации OOM в момент когда редис сбрасывает данные на диск. С 2гб проблем быть в целом не должно
Philipp
А какой у вас сценарий стресс-теста? основан ли он на каком-то реальном кейсе, на реальных данных?
Пока что спамлю локустом создание документов через API на основе FastAPI. Потом буду ещё небольшие файлы в GridFS писать (знаю, что не поддерживает транзакции), но пока без них. Пока что в транзакции всего по 2 операции, создать документ с информацией о файле, добавить в документ с инфой о проекте ссылку на новый файл.
Jasur Sharofiddinov
hello , can we search any field from whole MongoDb database, not only from one collection?
Alexandrr
Пока что спамлю локустом создание документов через API на основе FastAPI. Потом буду ещё небольшие файлы в GridFS писать (знаю, что не поддерживает транзакции), но пока без них. Пока что в транзакции всего по 2 операции, создать документ с информацией о файле, добавить в документ с инфой о проекте ссылку на новый файл.
я разделил на 2 типа транзакции в монго у себя: 1. для юзеров - юзер коннекты, таймауты везде не более 5 секунд 2. для обновлений коллекций (таблиц) - таймауты подключения 300 сек если у вас не все обрабатываются запросы и копится очередь, то коннекты могут подвисать, а так как они в очереди, то время истекает и они завершаются с исключением timeouterror пример такой: .connect('127.0.0.1', port=58999, socketTimeoutMS=5000, connectTimeoutMS=5000, serverSelectionTimeoutMS=5000, waitQueueTimeoutMS=15000) .connect('127.0.0.1', port=58999, socketTimeoutMS=300000, connectTimeoutMS=300000, serverSelectionTimeoutMS=300000, waitQueueTimeoutMS=300000) п.с. отталкивался ещё от того, что чаще всего встречал в практике. так же, ты не написал, с каким исключением у тебя обваливаются коннекты, так что можно только гадать
Alexander
hello , can we search any field from whole MongoDb database, not only from one collection?
Sure. But you need to implement loops through collections and fields on the client side. So, in my opinion, it's better to use something as Elasticseacrh.
Alexander
А разве можно в эластике искать сразу по всем индексам?
Можно индекс наполнить всеми необходимыми данными
Pavel
Можно индекс наполнить всеми необходимыми данными
так можно тогда и в монгу сложить все в одну коллекцию =)) У эластика у индекса маппинг есть у монги вообще можно все что угодно любой структурой запихивать ))
Alexander
так можно тогда и в монгу сложить все в одну коллекцию =)) У эластика у индекса маппинг есть у монги вообще можно все что угодно любой структурой запихивать ))
Как вариант синхронизировать данные из mongo в elastic. Мне кажется, он под такое больше заточен. Хотя, коечно, зависит от конкретной задачи.
Pavel
Как вариант синхронизировать данные из mongo в elastic. Мне кажется, он под такое больше заточен. Хотя, коечно, зависит от конкретной задачи.
я бы в данной задаче сложил бы просто нужные поля с их значениями в одну коллекцию и с данными о том в какой коллекции это поле и какой id у документа... мне кажется такая нормализация была бы оптимальной
Pavel
но в целом мне за мою многолетнюю практику чет такой задачи не встречалась искать сразу во всей БД по всем таблицам значение
Pavel
У монги есть проблема с полнотекстовым поиском, если там кириллица
ну если прям полнотекстовый то тогда да по такой схеме надо затолкать в эластик или хотя бы в сфинкс
Pavel
но все равно чтобы искать по полям например в эластике я значения все в одно поле search конкатенировал, правда не уверен что это было корректно, но оно работало как мне кажется чуть лучше и проще запросы можно было строить
Ruslan
Почему в сфере казино часто используются трекеры которые делают скрины екранов?
Abdulaziz
Здравствуйте, хотел имплементить фильтр + поиск, в реквесте принимаю 3 массива (categories, brands и title), нужно искать по этим данным, вот так выглядит запрос и ошибка
Abdulaziz
Abdulaziz
Vladyslav
Почему в сфере казино часто используются трекеры которые делают скрины екранов?
один из вариантов(слышал от знакомого) - изменением хтмля+js можна подкручивть себе