Artem
тоесть чтоб я получал данные нынешние, но еще и количество param1 = true из числа каждой группы
Artem
$sum: {$cond: [{$eq:"Asdas"}, 1, 0]} чтонить подобное
asdas Это параметр который мы проверяем на тру ?
Nick
asdas Это параметр который мы проверяем на тру ?
синтакс может быть напутан, просто суть донес
Artem
да, верное направление подсказали)
Artem
$sum: { $cond: [{$eq: ["&Asdas", "true"]}, 1, 0] } вот только почему то true оно не воспринимает ни как строку, ни как просто параметр
Artem
дак я же передаю true, чем не значение ?)
Nick
если вы хотите строки сравнивать норм
Artem
и без ковычек, просто значением тоже нули
Artem
не воспринимает ни как строку, ни как просто параметр
Artem
да, огромное спасибо, я слепой)
Artem
если кому-то будет полезно мб, то вот рабочий способ, разбирайтесь-пользуйтесь)
Alexandrr
Air
Товар Категория товара Подкатегория товара Для такой логики будет 3 коллекции или как лучше? В коллекции Товары, в документе товара будет _id: id, category_id: category_id, sub_category_id: sub_category_id В коллекции Категории в документе категории _id: id, category_name: "category_name" В коллекции Подкатегории в документе подкатегории _id: id, sub_category_name: "sub_category_name", category_id: category_id ? Или лучше 2 коллекции, где подкатегории будут вложены в категории
Air
зачем вообще 2 или 3 коллекции, достаточно 1
ето как 🤔 Все существующие категории и подкатегории держать в уме при создании нового товара?
Nick
В планах есть делать подподкатегорию В таком случае 3 уровень будет вложен во вторую?
Вот, значит уже стоит задумываться как выстраивать на произвольную вложенность. Почитайте https://www.mongodb.com/docs/manual/applications/data-models-tree-structures/
Anonymous
всем ку, пытаюсь установить монгу на хост на убунту 22.04, раньше помню без проблем ставил сразу через апт на вдс с убунту 18.04. еще пробовал по туторам, не спасало. sudo apt install mongodb Reading package lists... Done Building dependency tree... Done Reading state information... Done Package mongodb is not available, but is referred to by another package. This may mean that the package is missing, has been obsoleted, or is only available from another source E: Package 'mongodb' has no installation candidate sudo apt install mongodb-org Reading package lists... Done Building dependency tree... Done Reading state information... Done Some packages could not be installed. This may mean that you have requested an impossible situation or if you are using the unstable distribution that some required packages have not yet been created or been moved out of Incoming. The following information may help to resolve the situation: The following packages have unmet dependencies: mongodb-org-mongos : Depends: libssl1.1 (>= 1.1.1) but it is not installable mongodb-org-server : Depends: libssl1.1 (>= 1.1.1) but it is not installable mongodb-org-shell : Depends: libssl1.1 (>= 1.1.1) but it is not installable E: Unable to correct problems, you have held broken packages.
Alexandrr
ето как 🤔 Все существующие категории и подкатегории держать в уме при создании нового товара?
нет, есть список подкатегорий, есть список категорий и есть документы. все отлично ложится в 1 коллекцию единственное, при поиске нужно будет указывать наличие поля = true не стоит путать с реляционной бд, где такое делать нельзя
Air
Вот, значит уже стоит задумываться как выстраивать на произвольную вложенность. Почитайте https://www.mongodb.com/docs/manual/applications/data-models-tree-structures/
Посмотрел Вроде бы мне подходит из представленных https://www.mongodb.com/docs/manual/tutorial/model-tree-structures-with-parent-references/ но при таком подходе как сделать Выпадающий список категории на странице добавления Товара? Изначально я думал будет 10 документов(категории) и внутри у каждого будет объект с подкатегориями
Air
И когда нужна будет подподкатегория, то это будет объектом(поподкатегория) внутри объекта(подкатегория) в документе (категории) или это плохая практика?
Alexander
И когда нужна будет подподкатегория, то это будет объектом(поподкатегория) внутри объекта(подкатегория) в документе (категории) или это плохая практика?
Плохая практика, лучше сохранить все в одном документе, вряд ли категорий так много, чтобы разбивать на несколько документов.
Air
а что мешает? поиск по родительской категории
т.е. db.categories.find( { parent: null } ) Выдаст все категории первого уровня? конкретно пример из доки Books
Alexander
🤔🤔🤔 в доке по ссылке разве все в одном документе?
Там пример для больших данных. Категории же звучат как маленькие данные, которые лучше всего загрузить один раз и забыть. А не делать по запросу на каждый клик юзера
Nick
т.е. db.categories.find( { parent: null } ) Выдаст все категории первого уровня? конкретно пример из доки Books
да, или можно сделать условно одного родителя root у которого parent: null, а для отображения уже отсчитывать от него. Тут уже смотрите как вам удобнее будет это менеджерить
Air
Это мало, звучит как несколько килобайт.
крч мой интеллект 0-уровня догнал схему, к которой мы пришли вместе с админом а вот то что все хранить в одном документе не могу догнать
Air
Это мало, звучит как несколько килобайт.
подкатегории как будут храниться будут в этом документе? вложенный объект?
Alexander
подкатегории как будут храниться будут в этом документе? вложенный объект?
Что-нибудь типа { name: "category1", children: [ {name: "cubcat1", children:[...]}, {name: "cubcat2", children:[...] ] }, { name: "category1", children: [ {name: "cubcat1", children:[...]}, {name: "cubcat2", children:[...] ] },
Alexander
https://www.mongodb.com/developer/products/mongodb/mongodb-schema-design-best-practices/ У вас вариант one-to-few из статьи > Rule 1: Favor embedding unless there is a compelling reason not to.
Alexander
Вот еще https://www.mongodb.com/docs/manual/tutorial/model-embedded-one-to-many-relationships-between-documents/
Alexander
"Embedding connected data in a single document can reduce the number of read operations required to obtain data. In general, you should structure your schema so your application receives all of its required information in a single read operation."
Roberto
Hello everyone, I'm starting with MongoDb and I need to query a db on a remote host. What GUI do you recommend? I live in a country where we don't have credit cards, so I can't afford any commercial software. That's why I'm looking for a free alternative. I was trying with the free version of Studio 3T but since the license expired it doesn't let remote hosts enter, it gives errors.
Andrey
Есть два параметра: internalQueryMaxAddToSetBytes internalQueryMaxPushBytes по умолчанию они установлены в 100 mb в инете пишут устанавливать их через db.adminCommand({setParameter: 1, internalQueryMaxPushBytes: 1048576000}); можно ли через конфигурационный файл установить свои значения
Andrey
Но мне и помогло, и не помогло. Уперся в размер bson - 16 Mb.
Alexander
Но мне и помогло, и не помогло. Уперся в размер bson - 16 Mb.
С ума сойти, что же у вас за query такой?
Andrey
С ума сойти, что же у вас за query такой?
aggregate: match, group с addToSet - для выгрузки из 3 млн записей уникальных значений, ну, теперь просто по другому выгружаю. не страшно.
Andrey
А, отлично, тут действительно был хороший повод подумать о другом решении.
да просто кодом выгружаю, и на стороне кода проверяю на уникальность, и итог выгрузка в файл.
Alexander
Посмотрел в коде, действительно все элементы добавляются в промежуточный BSON объект, это ограничение классического оптимизатора то, что промежуточные результаты материализуются в BSON, а новый еще не готов https://github.com/mongodb/mongo/blob/521b53af47740717ac61a6df38ec2f17eba26c2c/src/mongo/db/update/addtoset_node.cpp#L136
Artem
Хай, подскажите почему changestream может отдавать 0 доступных записей? У нас шардированный кластер. В джава нацелелись на источник стрима. Запустили чтениt стрима изменений. Потом после манипуляций с БД, перестали получать изменения из changestream.
Alexandrr
Хай, подскажите почему changestream может отдавать 0 доступных записей? У нас шардированный кластер. В джава нацелелись на источник стрима. Запустили чтениt стрима изменений. Потом после манипуляций с БД, перестали получать изменения из changestream.
Фильтрация: Если вы используете фильтр в changestream, то это может привести к тому, что в стриме не будет доступных записей. Проверьте ваш фильтр, возможно, он не позволяет никаким изменениям проходить через него. Права доступа: Если у пользователя, под которым вы запускаете changestream, нет прав на чтение или на изменение данных в БД, то вы не сможете получать изменения через changestream. Проверьте права доступа для пользователя. Конфигурация кластера: Если ваш кластер MongoDB настроен неправильно, это может привести к тому, что вы не получаете изменения через changestream. Убедитесь, что ваш кластер настроен правильно. Большое количество клиентов: Если у вас есть много клиентов, которые читают данные из БД, то это может привести к тому, что changestream перегружен и не может обработать все изменения. В этом случае, вы можете увеличить количество инстансов changestream или использовать другой подход к чтению данных. Проблемы с сетью: Если у вас есть проблемы с сетью, то это может привести к тому, что вы не получаете изменения через changestream. Проверьте сетевое соединение и убедитесь, что нет никаких проблем с сетью. Проблемы с приложением: Если у вас есть проблемы с приложением, то это может привести к тому, что вы не получаете изменения через changestream. Проверьте ваше приложение на наличие ошибок или проблем в коде.
Alexander
Фильтрация: Если вы используете фильтр в changestream, то это может привести к тому, что в стриме не будет доступных записей. Проверьте ваш фильтр, возможно, он не позволяет никаким изменениям проходить через него. Права доступа: Если у пользователя, под которым вы запускаете changestream, нет прав на чтение или на изменение данных в БД, то вы не сможете получать изменения через changestream. Проверьте права доступа для пользователя. Конфигурация кластера: Если ваш кластер MongoDB настроен неправильно, это может привести к тому, что вы не получаете изменения через changestream. Убедитесь, что ваш кластер настроен правильно. Большое количество клиентов: Если у вас есть много клиентов, которые читают данные из БД, то это может привести к тому, что changestream перегружен и не может обработать все изменения. В этом случае, вы можете увеличить количество инстансов changestream или использовать другой подход к чтению данных. Проблемы с сетью: Если у вас есть проблемы с сетью, то это может привести к тому, что вы не получаете изменения через changestream. Проверьте сетевое соединение и убедитесь, что нет никаких проблем с сетью. Проблемы с приложением: Если у вас есть проблемы с приложением, то это может привести к тому, что вы не получаете изменения через changestream. Проверьте ваше приложение на наличие ошибок или проблем в коде.
Это нейросеть ответ сгенерировала?
Alexandrr
Фильтрация: Если вы используете фильтр в changestream, то это может привести к тому, что в стриме не будет доступных записей. Проверьте ваш фильтр, возможно, он не позволяет никаким изменениям проходить через него. Права доступа: Если у пользователя, под которым вы запускаете changestream, нет прав на чтение или на изменение данных в БД, то вы не сможете получать изменения через changestream. Проверьте права доступа для пользователя. Конфигурация кластера: Если ваш кластер MongoDB настроен неправильно, это может привести к тому, что вы не получаете изменения через changestream. Убедитесь, что ваш кластер настроен правильно. Большое количество клиентов: Если у вас есть много клиентов, которые читают данные из БД, то это может привести к тому, что changestream перегружен и не может обработать все изменения. В этом случае, вы можете увеличить количество инстансов changestream или использовать другой подход к чтению данных. Проблемы с сетью: Если у вас есть проблемы с сетью, то это может привести к тому, что вы не получаете изменения через changestream. Проверьте сетевое соединение и убедитесь, что нет никаких проблем с сетью. Проблемы с приложением: Если у вас есть проблемы с приложением, то это может привести к тому, что вы не получаете изменения через changestream. Проверьте ваше приложение на наличие ошибок или проблем в коде.
Ещё: наличие изменений, если их не было, либо часто запрашиваются, то может так же отдавать нуль
Artem
Фильтрация: Если вы используете фильтр в changestream, то это может привести к тому, что в стриме не будет доступных записей. Проверьте ваш фильтр, возможно, он не позволяет никаким изменениям проходить через него. Права доступа: Если у пользователя, под которым вы запускаете changestream, нет прав на чтение или на изменение данных в БД, то вы не сможете получать изменения через changestream. Проверьте права доступа для пользователя. Конфигурация кластера: Если ваш кластер MongoDB настроен неправильно, это может привести к тому, что вы не получаете изменения через changestream. Убедитесь, что ваш кластер настроен правильно. Большое количество клиентов: Если у вас есть много клиентов, которые читают данные из БД, то это может привести к тому, что changestream перегружен и не может обработать все изменения. В этом случае, вы можете увеличить количество инстансов changestream или использовать другой подход к чтению данных. Проблемы с сетью: Если у вас есть проблемы с сетью, то это может привести к тому, что вы не получаете изменения через changestream. Проверьте сетевое соединение и убедитесь, что нет никаких проблем с сетью. Проблемы с приложением: Если у вас есть проблемы с приложением, то это может привести к тому, что вы не получаете изменения через changestream. Проверьте ваше приложение на наличие ошибок или проблем в коде.
Спасибо, будем проверять. Фильтрация отпадает будем копать в другие стороны!
C
Стоит задача сделать поиск по нескольким полям внутри модели юзера(имейл, имя, город и тд). Хочу использовать для этого $or, но есть условие, что при успешном нахождении документов, мне нужно знать, по какому из вариантов произошёл метч, т.е я ввёл «Вася» и кого-то нашло по имени, а у кого-то так город называется, но нужна метка, какое из условий сработало. Пока из вариантов себе конечно вижу делать по отдельному запросу на каждое условие, но выглядит это как-то не очень...
Bretbas
Привет всем Пытаюсь подключиться к удаленной монге через туннель Пишет, что подключился успешно, а вот список БД не отдает: remote mongodb Failed to execute "listdatabases" command. Что можно сделать? Подскажите пожалуйста
Ev
привет! можно ли в mongo сделать запросы, которые выполнялись бы по графику? по примеру jobs в sql server
Ev
триггеры по ходу это делают
Alexander
привет! можно ли в mongo сделать запросы, которые выполнялись бы по графику? по примеру jobs в sql server
К сожалению нельзя, только внешние решения типа cron, либо использовать Scheduled Triggers в Atlas https://www.mongodb.com/docs/atlas/app-services/triggers/scheduled-triggers/
Alexandrr
да
чем?
Anonymous
чем?
информативностью
Alexandrr
информативностью
у нас профессиональное сообщество, человек обратился за помощью, в данный момент шутки не уместны, их не все могут понять
Air
так норм?
Если отображение не сломается, то да
Alexandrr
Если отображение не сломается, то да
а как это разработчик не знающий китайского будет поддерживать?
Air
а как это разработчик не знающий китайского будет поддерживать?
Насчёт поддержки согласен Просто сейчас моих мозгов не хватает как чуть усложнить На сегодня важно, чтобы отображение кириллицы не сломалось
Alexandrr
переводчика найдет
😅 а ещё оплатит со своего кармана и дополнительно оплатит просрочку выполнения задачи из-за сложностей с поддержкой и переводами