🅰️nimeCoder
Берёшь на совоем пк делаешь монгодамп по url
🅰️nimeCoder
Обычно я просто делаю поочередный экспорт коллекций в компасе в ручнуб
Eva🇺🇦
Привет! Вопрос по статистике.
Как подсчитать средний размер документа в коллекции, средний размер поля, среднее значение поля, количество документов? $avg?
Alexander
Alexander
или как можно перейти к нужной статье, если не знаешь где он в структуре?
Men
Занимаюсь рестором в percone backup mongo на новом инстансе, все настроил как надо, указал бэкап папку, смонтировал туда nfs бэкап сервер(откуда и берутся снэпшоты), но при pbm list возвращает пустой список, кто нибудь знает из за чего так?
Alexander
@dd_bb https://docs.db-ai.co/docs/manual/tutorial/configure-ssl/ просто подменой адреса не работает (
yopp
Я не осилил rewrite rule для caddy :(
Alexander
yopp
Если кто-то знает как сделать такой rewrite (нужно убрать из path последний слэш и сделать try_files), буду рад помощи
Eva🇺🇦
Даниил
всем привет! подскажите пожалуйста, как добавить свойство в каждый элемент коллекции, по условию, где этого свойства нет?
Даниил
попробывал так
после этого стёрлось всё кроме поле nomenclature
fierylife
Допустим есть документы документы с одинаковым полем ( назовем его протокол)
Нужно достать их ВСЕ из базы(не только те что совпадают), если у одного из этих документов поле с названием День недели = вторник
и поле Время= 6
А если хоть одно из этих полей не соответствует условию, то не выводить ничего
запрос делаю из джавы, знаю как оформить всё в коде, но хотелось бы запихнуть подобные условия в запрос к БД
Anonymous
Привет, кто работал с датами в pymongo?
Мне нужно получать промежутки между датами, но единственная инфа, которую я нашел - isodate - которая не работает
Alexander
Alexander
не надо ISODate туда, драйвер сам приведет к нужному типу
Anonymous
спасибо
Nick
fierylife
ну вот не получается
fierylife
вот тут лучше описал
fierylife
В общем есть коллекция с кучей документов. В каждом документе есть поле, назовём его applicationId(не ключ)
Документов с идентичным applicationId может быть от одного до трёх.
Условие:
Нужно выбрать все документы с равным applicationId,
проверить их на некое условие. Если оно совпадает хотя бы для одного, то вывести все
иначе не выводить ничего
как на джавке это организовать понятно, а возможно ли одним запросом к БД ?
Alexandrr
Vlad
Всем привет.
Использую mongoose. Подскажите, как проверить тип входных данных из роута по отдельному полю из схемы?
Типа User.schema.name.validate(req.body.name)
Nick
fierylife
Спасибо, попробую
idk
Vlad
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):
...
# тут тело условия и нормализация данных если надо, а потом
# запрос к СУБД
"
idk
Inline ®
Здравствуй, как мне переименовать элемент в объекте? И скажите как мне удалить элемент из объекта, а то я чёт пробовал и в итоге удалил весь объект
Дмитрий
Inline ®
Set, unset
Не, ты похоже не понял меня.
Типа usdt {
"balance": 0
}
Как мне "balance" изменять на "balance_income"?
Дмитрий
Прочитать данные и обновить, указав в set и unset данные.
Inline ®
Дмитрий
Переименование = удаление старых и запись новых
В монге вряд ли есть возможность переименовать поле
Inline ®
idk
Andrey
Andrey
Inline ®
Vlad
а ты подумай, name может быть строкой? Ты так каплинг слоев создаешь. Что лучше, каплинг или же поправить в 2х местах?
С полем name ппостой пример. Если взять что-то сложнее.
Допустим некое поле имело тип масив, а стало обектом.
Либо поле name будет иметь обект то нужно будет отдельно проверять наличие в нем полей и их валидность.
Явная связаность будет луше не явной.
Для postgreql использовал самописную библиотеку. Там после создания схемы мог сконструировать отдельное поле User.schema.name.constructor(name). Если конструируя получил ошибку значит данные не валидны.
Вот ищу как используя одну схему можно проверить валидность всей сущносити new User(...).validate() либо отдельного поля
Nick
Vadim
Всем добрый день! Подскажите пожалуйста как сделать так чтобы метод find возвращал только те поля которые есть в модели и не включал в результат служебные поля, чтобы вот такого типа ошибок не было.
Nick
Vadim
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?
Jasur Sharofiddinov
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
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
Sardor
https://www.stackchief.com/tutorials/%24lookup%20Examples%20%7C%20MongoDB
Abdulaziz
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
{"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}}
json.loads(object)
на дебаггере смотри
Alexandrr
{"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}}
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мс. У вас включен профайлер, сообщение появилось именно по этому
Шынгыс
спасибо. апдейт медленно выполнялся из-за блокировки?