🅰️nimeCoder
Берёшь на совоем пк делаешь монгодамп по url
Vadim
Ну ты же по ssh к серверу подключён?
а из монго шел дамп нельзя никак сформировать и скачать?
🅰️nimeCoder
Берёшь на совоем пк делаешь монгодамп по url
Там в доке написано как это сделать, нужно толкьо поставить монгодамп себе на пк, правда если у тебя шиндовс, то возможно это будет не так просто
🅰️nimeCoder
Обычно я просто делаю поочередный экспорт коллекций в компасе в ручнуб
Eva🇺🇦
Привет! Вопрос по статистике. Как подсчитать средний размер документа в коллекции, средний размер поля, среднее значение поля, количество документов? $avg?
yopp
Привет! Вопрос по статистике. Как подсчитать средний размер документа в коллекции, средний размер поля, среднее значение поля, количество документов? $avg?
Средний размер документа и их количество доступно через $collStats https://docs.db-ai.co/docs/manual/reference/operator/aggregation/collStats.html Размер поля можно получить через $bsonSize. Так как его параметром может быть только вложенный документ/объект, то размер будет всего объекта https://docs.db-ai.co/docs/manual/reference/operator/aggregation/bsonSize.html Среднее значение через $group и $avg
Alexander
или как можно перейти к нужной статье, если не знаешь где он в структуре?
Men
Занимаюсь рестором в percone backup mongo на новом инстансе, все настроил как надо, указал бэкап папку, смонтировал туда nfs бэкап сервер(откуда и берутся снэпшоты), но при pbm list возвращает пустой список, кто нибудь знает из за чего так?
Alexander
@dd_bb https://docs.db-ai.co/docs/manual/tutorial/configure-ssl/ просто подменой адреса не работает (
yopp
@dd_bb https://docs.db-ai.co/docs/manual/tutorial/configure-ssl/ просто подменой адреса не работает (
Поиска, к сожалению, нет. Некоторые ссылки действительно не совпадают, это особенности генератора документации монги. Если ссылка со слешом не открывается, то попробуйте заменить слэш на .html https://docs.db-ai.co/docs/manual/tutorial/configure-ssl.html
yopp
Я не осилил rewrite rule для caddy :(
yopp
Если кто-то знает как сделать такой rewrite (нужно убрать из path последний слэш и сделать try_files), буду рад помощи
yopp
А можно ли в одной агрегации объединить результат collStats и group, avg?
Да, вы можете несколько пайплайнов обьединить через $facet https://docs.db-ai.co/docs/manual/reference/operator/aggregation/facet.html
Даниил
всем привет! подскажите пожалуйста, как добавить свойство в каждый элемент коллекции, по условию, где этого свойства нет?
Даниил
попробывал так после этого стёрлось всё кроме поле nomenclature
Alexandrr
попробывал так после этого стёрлось всё кроме поле nomenclature
попробуй почитать вот эту статью: https://www.bmc.com/blogs/mongodb-operators/
fierylife
Допустим есть документы документы с одинаковым полем ( назовем его протокол) Нужно достать их ВСЕ из базы(не только те что совпадают), если у одного из этих документов поле с названием День недели = вторник и поле Время= 6 А если хоть одно из этих полей не соответствует условию, то не выводить ничего запрос делаю из джавы, знаю как оформить всё в коде, но хотелось бы запихнуть подобные условия в запрос к БД
Anonymous
Привет, кто работал с датами в pymongo? Мне нужно получать промежутки между датами, но единственная инфа, которую я нашел - isodate - которая не работает
Alexander
не надо ISODate туда, драйвер сам приведет к нужному типу
Anonymous
спасибо
fierylife
ну вот не получается
fierylife
вот тут лучше описал
fierylife
В общем есть коллекция с кучей документов. В каждом документе есть поле, назовём его applicationId(не ключ) Документов с идентичным applicationId может быть от одного до трёх. Условие: Нужно выбрать все документы с равным applicationId, проверить их на некое условие. Если оно совпадает хотя бы для одного, то вывести все иначе не выводить ничего как на джавке это организовать понятно, а возможно ли одним запросом к БД ?
Vlad
Всем привет. Использую mongoose. Подскажите, как проверить тип входных данных из роута по отдельному полю из схемы? Типа User.schema.name.validate(req.body.name)
fierylife
Спасибо, попробую
idk
Всем привет. Использую mongoose. Подскажите, как проверить тип входных данных из роута по отдельному полю из схемы? Типа User.schema.name.validate(req.body.name)
ты мне кажется мешаешь слои, валидация это либо транспортный слой, либо же доменный, в твоем случае это транспортный
Alexandrr
Прошу прощения, не понимаю на какую мысль наталкиваеш.
он имеет ввиду - у тебя код программный должен валидировать данные формирующие тело запроса к СУБД, а СУБД должна заниматься только работой с ГОТОВЫМИ телами запросов
Vlad
он имеет ввиду - у тебя код программный должен валидировать данные формирующие тело запроса к СУБД, а СУБД должна заниматься только работой с ГОТОВЫМИ телами запросов
Если я правильно понял, то у меня так и происходит. Я в роуте валидирую входные данные if(typeof req.body.name === 'string') Но я хочу проверять тип спользуя схему, чтоб не дублировать код. Грубо говоря если у меня поменяется тип проперти 'name' с String на Number то придется переписывать код на if(Number.isNaN(Number(req.body.name)) А если использовать на подобе вот этого User.schema.name.validate(req.body.name), - код во многих местах не нужно править.
Alexandrr
Если я правильно понял, то у меня так и происходит. Я в роуте валидирую входные данные if(typeof req.body.name === 'string') Но я хочу проверять тип спользуя схему, чтоб не дублировать код. Грубо говоря если у меня поменяется тип проперти 'name' с String на Number то придется переписывать код на if(Number.isNaN(Number(req.body.name)) А если использовать на подобе вот этого User.schema.name.validate(req.body.name), - код во многих местах не нужно править.
"хочу проверять тип спользуя схему" - не понимаю, что это значит в питоне (на котором я пишу) сравнения типов объектов через if - недопустимо. для этого есть специальная функция, которая возвращает булево: "isinstance(object, type)" ну и тело условия идёт далее, смотря какой тип данных ты получаешь на входе. (может практика не правильная, пните пендалем меня, если кто знает лучше): "obj1 = 0 if isinstance(obj1, int): ... # тут тело условия и нормализация данных если надо, а потом # запрос к СУБД elif isinstance(obj1, dict): ... # тут тело условия и нормализация данных если надо, а потом # запрос к СУБД elif isinstance(obj1, float): ... # тут тело условия и нормализация данных если надо, а потом # запрос к СУБД "
Inline ®
Здравствуй, как мне переименовать элемент в объекте? И скажите как мне удалить элемент из объекта, а то я чёт пробовал и в итоге удалил весь объект
Inline ®
Set, unset
Не, ты похоже не понял меня. Типа usdt { "balance": 0 } Как мне "balance" изменять на "balance_income"?
Дмитрий
Прочитать данные и обновить, указав в set и unset данные.
Inline ®
Прочитать данные и обновить, указав в set и unset данные.
Мне не данные, нужно обновить, а название элемента
Дмитрий
Переименование = удаление старых и запись новых В монге вряд ли есть возможность переименовать поле
Flake
Мне не данные, нужно обновить, а название элемента
Ансетом удаляешь поле. Сетом ставишь нужное тебе.
Andrey
Мне не данные, нужно обновить, а название элемента
главное зачем так делать… уму непостижимо
Inline ®
главное зачем так делать… уму непостижимо
Ну, я делал общий кошелек юсдт, а теперь у каждого пользователя свой будет, и смыла в balance нет, хочу переименовать и туда записывать начисления
Vlad
а ты подумай, name может быть строкой? Ты так каплинг слоев создаешь. Что лучше, каплинг или же поправить в 2х местах?
С полем name ппостой пример. Если взять что-то сложнее. Допустим некое поле имело тип масив, а стало обектом. Либо поле name будет иметь обект то нужно будет отдельно проверять наличие в нем полей и их валидность. Явная связаность будет луше не явной. Для postgreql использовал самописную библиотеку. Там после создания схемы мог сконструировать отдельное поле User.schema.name.constructor(name). Если конструируя получил ошибку значит данные не валидны. Вот ищу как используя одну схему можно проверить валидность всей сущносити new User(...).validate() либо отдельного поля
Vadim
Всем добрый день! Подскажите пожалуйста как сделать так чтобы метод find возвращал только те поля которые есть в модели и не включал в результат служебные поля, чтобы вот такого типа ошибок не было.
Vadim
https://www.tutorialspoint.com/mongodb/mongodb_projection.htm
это с проекцией такая ошибка)
Nick
Видимо не все прописали
Jasur Sharofiddinov
Hello guys, right now i am getting first level children by "maxDepth": 0, what should i do to get only 2nd level children? if i do "maxDepth": 1 , i am gettinng 1st and 2 nd together, can u help please?
Anonymous
why "mongosh --host mongodb:27017 -u root -p <pass> --eval rs.initiate()" throws "Error parsing command line: unrecognised option '--host' try 'mongod --help' for more information"
Anonymous
??
Maxmudjon
$ne: “expire”
Alexandrr
потому, что библиотека pymongo использует упакованные в методы запросы к СУБД. у вас нет методов в примере вообще
Eva🇺🇦
No index available for this query. это значит, что индекс не создан, или он тупо не используется при поиске даже если есть?
Alexandrr
Transactions db.collection.replaceOne() can be used inside multi-document transactions. Important In most cases, multi-document transaction incurs a greater performance cost over single document writes, and the availability of multi-document transactions should not be a replacement for effective schema design. For many scenarios, the denormalized data model (embedded documents and arrays) will continue to be optimal for your data and use cases. That is, for many scenarios, modeling your data appropriately will minimize the need for multi-document transactions. For additional transactions usage considerations (such as runtime limit and oplog size limit), see also Production Considerations. прочитав это в доке, я так понял, .replace_one() существует, а .replace_many() - нет? каким образом можно на уровне СУБД реализовать .replace_many()? или только на уровне кода циклом гнать по 1 записи через .replace_one()?
Abdulaziz
Привет, есть две сущности: Comment и User, у Comment есть поле user который ссылается на автора коммента. И при получении коммента я не знаю как получить автора комментария
Abdulaziz
Sardor
https://www.stackchief.com/tutorials/%24lookup%20Examples%20%7C%20MongoDB
Andrey
Вопрос такой, как оценить время, думаю шардировать коллекцию, условно 100 млн записей, сколько времени может занять?
fierylife
Может в монге кто хорошо разбирается или в Spring MongoDB и может подсказать, как заставить ее не сохранить вот такие пустые массивы. Делать поле как null
fierylife
Шынгыс
всем, привет. кто может помочь разобрать это сообщение в логе
Шынгыс
{"t":{"$date":"2022-07-08T17:28:35.005+06:00"},"s":"I", "c":"COMMAND", "id":51803, "ctx":"conn950","msg":"Slow query","attr":{"type":"command","ns":"config.$cmd","command":{"update":"system.sessions","o rdered":false,"allowImplicitCollectionCreation":false,"writeConcern":{"w":"majority","wtimeout":15000},"$db":"config"},"numYields":0,"reslen":5682,"locks":{"ParallelBatchWriterMode":{"acquireCount":{"r":100 0}},"ReplicationStateTransition":{"acquireCount":{"w":1000}},"Global":{"acquireCount":{"w":1000}},"Database":{"acquireCount":{"w":1000}},"Collection":{"acquireCount":{"w":1000}},"Mutex":{"acquireCount":{"r" :1000}}},"flowControl":{"acquireCount":1000,"timeAcquiringMicros":600},"writeConcern":{"w":"majority","wtimeout":15000,"provenance":"clientSupplied"},"storage":{},"protocol":"op_msg","durationMillis":212}}
Alexandrr
yopp
{"t":{"$date":"2022-07-08T17:28:35.005+06:00"},"s":"I", "c":"COMMAND", "id":51803, "ctx":"conn950","msg":"Slow query","attr":{"type":"command","ns":"config.$cmd","command":{"update":"system.sessions","o rdered":false,"allowImplicitCollectionCreation":false,"writeConcern":{"w":"majority","wtimeout":15000},"$db":"config"},"numYields":0,"reslen":5682,"locks":{"ParallelBatchWriterMode":{"acquireCount":{"r":100 0}},"ReplicationStateTransition":{"acquireCount":{"w":1000}},"Global":{"acquireCount":{"w":1000}},"Database":{"acquireCount":{"w":1000}},"Collection":{"acquireCount":{"w":1000}},"Mutex":{"acquireCount":{"r" :1000}}},"flowControl":{"acquireCount":1000,"timeAcquiringMicros":600},"writeConcern":{"w":"majority","wtimeout":15000,"provenance":"clientSupplied"},"storage":{},"protocol":"op_msg","durationMillis":212}}
update в коллекции system.sessions занял 212мс. У вас включен профайлер, сообщение появилось именно по этому
Шынгыс
спасибо. апдейт медленно выполнялся из-за блокировки?