Kek
как можно избавиться от всего "лишнего" и получить только то что я вижу в бд?
Kek
Вы сериализуете модель в монгусе?
вероятно нет как это сделать?
Artem👨🏻‍💻🛥🐋
Нет, я прашиваю где пример того как вы использовали $avg чтобы сравнить где что не так идет в впшем случае
обновил все тут с описание того какие документы есть и pipiline и что не так( https://pastebin.com/TrXGpyke
Nick
обновил все тут с описание того какие документы есть и pipiline и что не так( https://pastebin.com/TrXGpyke
и всеравно примера использования $avg нет. Важно как именно вы построили пайплайн с авг
Nick
обновил все тут с описание того какие документы есть и pipiline и что не так( https://pastebin.com/TrXGpyke
и еще раз определите что вы хотите получить, сейчас в пайпе сумма средних показателей - это бессмысленное число. точно пайп верный?
Nick
обновил все тут с описание того какие документы есть и pipiline и что не так( https://pastebin.com/TrXGpyke
наверн я понял в чем ваш затык, $avg считает сумму указанного поля и делит на количество документов. Поэтому если вы хотите делить на какоето другое число (сумму просмотров например), то $avg не подойдет и надо все сумму самому считать и выводить среднее доп стейджем через деление
-
В самом конце
Alex
Всем привет! Чем кроме mongostore можно восстановить .gz архив mongo
Sergii V.
Коллеги, всем привет! Подскажите инструмент для построения схемы базы данных и связей Я нашел этот https://hackolade.com/ Нужна рекомендация что Вы применяете! Заранее спасибо!
Виталий
народ привет
Виталий
подскажите пожалуйста нужно с монге сделать агрегацию по 3 коллекциям, чтобы вернуло результат кол-1 {кол-2, кол3 c одновременным соблюдением условий в колллекии 2 и 3 по фильтрации
Виталий
через какой путь в агрегации это делается? если делаем в пайплайне два лукапа оно ведет себя как выборка по принципу ИЛИ
Виталий
а нам крайне важно заставить монгу выдать только по принципу И
Nick
Виталий
условно есть заказы, позиции и юзеры
Виталий
надо от заказа найти все что подходит по условию позиция заголовок = хххх и юзер емайл = ееее
Виталий
при том в заказе юзер и позиции это рефы
Nick
надо от заказа найти все что подходит по условию позиция заголовок = хххх и юзер емайл = ееее
что мешает в лукапе задать условия? вот примерчик https://www.mongodb.com/docs/manual/reference/operator/aggregation/lookup/#std-label-lookup-concise-correlated-subquery и не бойтесь писать одно большое сообщение, не было необходимости делать три разных
Виталий
да пример этот видели, но проблем в чуть чуть другом, у нас сразу две подколлекции с условиями
Nick
да пример этот видели, но проблем в чуть чуть другом, у нас сразу две подколлекции с условиями
ну значит на обеих коллекциях свои условия. Если надо то вложенные лукапы делаете
Муслим
добрый день, не могу ни как сделать запрос, работаю через "mongodb compass", в таблице есть объект внутри объекта есть DateTime и Ticks, хочу сделать запрос диапозона даты CreationTime.DateTime CreationTime (Object) -> DateTime 2023-09-08T13:15:00.261+00:00 -> Ticks 638297757002615422 как только не перепробовал не работает такой поиск ((( help пожалуйста
Муслим
покажите как пробовали
вот так не работает: { CreationTime: { $gt: ISODate('2021-01-01') } } так тоже: { CreationTime: { DateTime: { $gt: ISODate('2021-01-01') } }}
Муслим
я понимаю что поле DateTime прячется внутри объекта, но как к нему достучаться и проверить в запросе не понимаю (((
Муслим
CreationTime - формат Object DateTime - это формат DateTime
Назар
через точку {«CreationTime.DateTime»: …}
Муслим
через точку {«CreationTime.DateTime»: …}
спасибо, мелочь а весь мозг мне вынесла ))) все заработало
Стас
Привет. Пытаюсь спроектировать REST api, но вот с монгой совсем плохо знаком. Пара вопросов: 1) Как спроектировать бд, если задача - под N зареганных юзеров сделать собственные коллекции с данными о товарах, остатках, настройках и тд 2) По расписанию каждый день в одну коллекцию добавляются данные о продажах для накопления статистики, Данных довольно много и коллеция растет каждый день на 40Кб. Как обычно организуют подобные вещи? Разбивают на отдельные коллеции или что-то еще?
Стас
А вы точно уверены, что вам нужна именно нереляционная бд?
не уверен, но, с ней я могу быть максимально автономен, так как sql базы сам не потяну
Стас
ну или уйдет больше времени чтоб разобраться
Стас
если у каждого пользователя свой список покупок
Alexandr
если у каждого пользователя свой список покупок
У каждого пользователя наверняка должен быть уникальный идентификатор, который можно указывать и в списке покупок
h8ace
Всем привет, не подскажете в чем тут проблема? Query failed with error code 13 with name 'Unauthorized' and error message 'command find requires authentication' on server 10.10.10.10:27017? У меня есть MongoDB cluster из 3 нод, я шард не использую, чистый реплика сет. Конечно же у меня перед кластером стоить Haproxy. Я через Haproxy подключился к текущего primary db, но не могу там достать коллекций. storage: dbPath: /var/lib/mongodb # engine: # wiredTiger: # where to write logging data. systemLog: destination: file logAppend: true path: /var/log/mongodb/mongod.log # network interfaces net: port: 27017 bindIp: 127.0.0.1,10.10.10.9 # how the process runs processManagement: timeZoneInfo: /usr/share/zoneinfo security: keyFile: /mongo.yaml #operationProfiling: replication: replSetName: "rs001" #sharding: ## Enterprise-Only Options: #auditLog: #snmp:
Konstantin
всем привет! подскажите, появятся ли какие-то подводные камни с монгой в случае, если в коллекции использовать _id типа guid вместо стандартного objectid?
yopp
Здравствуйте 🙂 Да в целом никаких, кроме того что _id индекс будет чуть больше, из-за того что guid длинее чем oid
yopp
В целом object id ~~ uuidv4
h8ace
вопрос, а почему "конечно" "Конечно же у меня перед кластером стоить Haproxy."(с)
Потому что у меня на бэкэнде есть сервисы, которые работают с монго.
Andrey
Потому что у меня на бэкэнде есть сервисы, которые работают с монго.
ну, так перед сервисами свое, "прокси", а монге зачем?
Andrey
Эм не совсем понял?
зачем балансер, прокси для монги? сервисам понятно, а базе данных зачем?
h8ace
зачем балансер, прокси для монги? сервисам понятно, а базе данных зачем?
Сервисы->прокси->кластер монго(текущий праймари)
Andrey
Сервисы->прокси->кластер монго(текущий праймари)
так у вас кластер, вы указываете в коннекшн стринге из сервисов же - подключаться к кластеру...зачем тут прокси
h8ace
так у вас кластер, вы указываете в коннекшн стринге из сервисов же - подключаться к кластеру...зачем тут прокси
То есть я могу через коннекшн стринг, указать сервисам что они подключается к кластеру монго и они сами поймут какой сейчас текущий мастер?
Andrey
То есть я могу через коннекшн стринг, указать сервисам что они подключается к кластеру монго и они сами поймут какой сейчас текущий мастер?
у вас реплика сет, меня поправят, но насколько я помню, в реплике сет - пишет всегда мастер, а читать можно указать через настройки подключения к кластеру. Посмотрите документацию. Если бы у вас были разные кластеры, разные инстансы с разными целями, или особенной конфой. Тогда понятно. Но тут, могу ошибаться, но прокси тут лишний.
Askhat
То есть я могу через коннекшн стринг, указать сервисам что они подключается к кластеру монго и они сами поймут какой сейчас текущий мастер?
Разрабы монго щас такие приуныли наверное)) В целом ответ да. Монга сама тебе определит куда лучше подключится (грубо говоря). В строке подключения нужно указать реплику глааное
h8ace
у вас реплика сет, меня поправят, но насколько я помню, в реплике сет - пишет всегда мастер, а читать можно указать через настройки подключения к кластеру. Посмотрите документацию. Если бы у вас были разные кластеры, разные инстансы с разными целями, или особенной конфой. Тогда понятно. Но тут, могу ошибаться, но прокси тут лишний.
Хорошо я вас дополню, Есть кластер монго, да они на разных инстансах, и тем более в разных сетях находится. ( 3 ноды) Я понимаю что всегда пишет мастер. Но тут дела в сервисах, допустим мастер упал, и сейчас пишет другой мастер, а у него айпи совсем другой. Как мне своим сервисам бекэнда, который в другой сети, в другом городе сказать, что сейчас пишет другой мастер? Бэкэнд на шарпе
Askhat
Тогда нужна нода арбитр, чтобы такие вопросы решать
h8ace
Указываю к сожалению
Даже если он был в dns, в чем смысл? Если машина полностью не доступна
h8ace
Тогда нужна нода арбитр, чтобы такие вопросы решать
Да я читал про это, Но решил прокси лучше, лучше иметь 2 реплики, вместо арбитра
Askhat
Да я читал про это, Но решил прокси лучше, лучше иметь 2 реплики, вместо арбитра
Это же костыль) Арбитр не требует особых мощностей. Его главная задача решить кто primary
h8ace
арбитры практически не потребляют ресурсов
Это я понял, поправьте если ошибаюсь, Но они вроде бы не делает реплику
Askhat
Указываю к сожалению
Нужно в строке подключения указывать формат подключения как к репликасету и тогда при наличии арбитра будет все ок
Andrey
Это я понял, поправьте если ошибаюсь, Но они вроде бы не делает реплику
mongosh "mongodb+srv://mongodb0.example.com:27017,mongodb1.example.com:27017,mongodb2.example.com:27017/?authSource=admin&replicaSet=myRepl" --apiVersion 1 --username myDatabaseUser
Andrey
Это я понял, поправьте если ошибаюсь, Но они вроде бы не делает реплику
вот тут посмотрите https://www.mongodb.com/docs/manual/reference/connection-string/ потому что прокси тут лишний.
h8ace
Это же костыль) Арбитр не требует особых мощностей. Его главная задача решить кто primary
Да вот вы правы. А зачем мне нужен арбитр, если я могу иметь 2 копий вместо 1? Или мб я чего не понимаю? Мб как то влияет на работу репликаций монго?
Andrey
Да вот вы правы. А зачем мне нужен арбитр, если я могу иметь 2 копий вместо 1? Или мб я чего не понимаю? Мб как то влияет на работу репликаций монго?
с не той стороны заход У вас кластер: n сервера - реплика set, 3 арбитра(ничего не потребляют) в кластере, вы указываете в клиенте что цепляетесь к кластеру, и перечисляете сервера(не арбитры). Всё. Прокси не нужен.
h8ace
Арбитр позволяет определить какая из копий будет преимущественно главной
Хапрокси тоже самое может делать. Насколько я знаю еще можно самому монго указать приоритет реплик
Askhat
Понятно что может. Просто зачем вставлять в инструмент то, что ему изначально не пренадлежит. Тпк называемый прокси у монги из коробки уже есть и работает корректно и без лишних особо настроек
Yevgen
Привет. Есть такой вопрос. Есть такой датасет. Группа 1: car1, car2; Группа 2: car3, car4. Каждая машина имеет пробег. В коллекции нет групп. Группы надо создать в монгодб аггрегации и посчитать пробег по каждой группе. Кто-то может подсказать примеры, как это правильно решить.
Sergey
ребят, всем привет. есть проблемка: имеется документ X. у него есть массив Y. каждый элемент этого массива - это документ, у которого есть некоторое поле id нужно: получить документ X, и чтобы в массиве Y оказались только те документы, айди которых равен, например, 1. elemMatch не подходит, так как он не кладёт в массив все документы, а только один. составил запрос с агрегацией, но, кажется, что можно сделать проще: db.list.aggregate([{$match: {_id: ObjectId("64f998428f32813ba68010eb"), "subscriptions.channel": 1}}, {$unwind: "$subscriptions"}, {$match: {"subscriptions.channel": 1}}, {$group:{"_id":"$_id","subscription":{$push:"$subscriptions"}, "email": {$first:"$email"}}}]) может кто-то подсказать, как правильнее всего составить такой запрос?