yopp
Но эффективнее будет запланировать обновление до поддерживаемой версии. 3.х умрет уже в апреле
yopp
А в 4.0 уже есть поддержка Decimal128, с которым костылей для точного хранения чисел уже не надо
RdfBbx
Ребят, кто с nestjs + mongoose работал? При создании документа, сабдокумент не создается, хотя дефолтные значения указаны.
RdfBbx
RdfBbx
Vladimir
Вроде есть какая то переключалка в монгусе, создавать ли дефолтные поля, я делал, ща попробую вспомнить
Vladimir
не, ток вот это помню, но это при обновлении. setDefaultsOnInsert на дефолтах должно работать,
Vladimir
Может дело в том, что там конструктора нет, на Ecdsa классе, вот он и инициализируется из js как пустой.
V
ребят подскажите а есть какие-то особые плюсы запуска монги в кубере? я по правде говоря не вижу ну разве чтоли скорость развертывания
Alexandr
Товарищи, кто подскажет, по какой причине могут не стартовать шарды после прописывания в конфиги keyFile'ов?
Alexandr
конфиг-сервера и mongos запустились, а шарды - нет
Alexandr
В логах такое: no global storage engine yet
Kirill
всем привет! Подскажите почему значение переменной не считывается в match? Хотя если захардкодить в match, то запрос отрабатывает нормально. Я как-то неправильно передаю переменную? const startDate = req.body.start; const endDate = req.body.end; console.log(startDate) -- приходит нужное значение { $match: { EndTime: { $gte: startDate, $lte: endDate, }, }, },
Roman Khonichev
возможно потому что в поле EndTime объект даты, а в переменных строки?
Alexandr
Господа, никак не получается решить проблему: не стартуют шарды. Что может быть?
Alexandr
Завершал работу через db.serverShutdown
Alexandr
Потом добавил в конфиг путь к файлу ключа, запускаю и никак...
Edwin-Mark
Здрасте. Есть ли быстрый способ доставать дейту каскадом? Типо вместо того чтобы сделать цыкл и к каждому елементу искать рекарды
Edwin-Mark
Уточню. У меня есть много ботов и к каждому нужно достать диалоги. Это отдельные коллекции
Sardor
Всем привет! Подскажите, пожалуйста, как сделать следующее: У всех документов в одной коллекции есть одинаковое поле. Нужно получить номер определенного документа в этой коллекции, отсортированной по указанному полю. Т.е. вроде места в рейтинге
Alexandr
Вдруг кому поможет: было 2 шарда. В сумме 1,3 терабайта данных. Остановил оба, настроил авторизацию по ключу. Запускаются только конфиг и mongos, а шарды никак. Проблема была в том, что wiredTiger при каждом запуске желает удостовериться, что все хорошо с данными и что-то там пытается восстановить. На таких объемах он не укладывается в стандартный таймаут. Поэтому надо добавить таймаут в >600 секунд в файл mongod.service
Alexander
Доброй ночи, вопрос: есть в монге транзакция чтобы заблочила find и update документа?
Alexander
а то есть некая логика в коде и получается что find() возвращает одинаковое значение (так как update у другого ещё не закончился)
Alexander
про findandupdate знаю, но тут очень размазана именно по коду, а не по базе логика (несколько find и тд) (код не мой :) )
Pavel
Ребят, как обратно сгруппировать массив events?
Pavel
Pavel
Pavel
Ребяатаа, туплю капец. Как обратно сгруппировать после $unwind?
yopp
рекомендую вместо $unwind и $match использовать $reduce
yopp
Это более простой и эффективный способ отфильтровать массив по условию, не раздувая пайплайн
Alexandr
Господа, нужно мнение экспертов: есть 2 физических сервера. На сервере А 3 контейнера (2 mongo-donf 1 mongos) и непосредственно в системе установлен mongodb. На сервере Б только mongodb. Шардинг-кластер. Поле настройки авторизации запросы стали исполняться долго и периодически выскакивает ошибка (в studio 3t) "Couldnot find matching read perfomance for set repl2" где repl2 - это репликасет из одного единственного сервера Б
Alexandr
Т.е. вроде сервер Б отваливается, но на самом деле это не так - связь с ним есть стабильная и быстрая
Danil
Всем привет, подскажите, пожалуйста, как можно добавить данные в дочерний массив вот сюда http://joxi.ru/LmGO5KDClN8ogm Пытаюсь сохранить вот таким путем http://joxi.ru/Y2L1KO0SEWX5PA но данные в базу не пишутся, в консоле они выводятся нормально.
Slava
всем аллоха
Aleksandr
Всем приввет, подскажите плиз. Есть коллекция со статусами (открыто, закрыто, отклонено) и есть коллекция tasks, у моделей в которой есть поле status: (открыта задача, закрыта, отклонена) это поле status ссылается на коллекцию statuses, там id нужного статуса. Нужно фильтровать задачи по этим статусfv и я хочу добавить индекс по этому самому статусу. Это нормально так делать вообще если в поле лежит ссылка на другую коллекцию?
Alexander
Всем привет, хотел бы ещё раз спросить по ночному вопросу: read-commit lock в монге не присутсвует?
Alexander
Вопрос возможно ли решение - обновления размазана по функции и нескольким таблицам, следовательно получается repeated-read, как это избежать в монге не очень знаю
Alexander
можно наверное сделать мануальный лок, но тогда, по идее, если не делать некий спинлок, то параллельные запросы будут отваливаться
Alexander
может какие-то решения есть ?
Denis
Вопрос возможно ли решение - обновления размазана по функции и нескольким таблицам, следовательно получается repeated-read, как это избежать в монге не очень знаю
Смотря на чем кодишь. В го драйвере транзакции сделаны через контекст, и можно в разных модулях работать в рамках 1 транзакции
Alexander
Смотря на чем кодишь. В го драйвере транзакции сделаны через контекст, и можно в разных модулях работать в рамках 1 транзакции
Да, как раз го, не знал про это - спасибо. Но думаю тут всё хуже - хотят несколько инстансов пускать - я так понимаю вариантов это оставляет немного: - или какой-нибудь оптимистичный лок (но хотят чтобы параллельные запросы не падали) - тогда это дополнительный спинлок, что совсем плохо - или, ну хз, надо на mysql переезжать видимо
Alexander
Не понял про параллельные инстансы. Сервис скейлить что ли? И как это мешает?
да, тогда я не понял. ну по идее один инстанс создаёт одну транзакцию, другой другую. если я правильно понимаю они же не будут лочить друг-друга, в монге же такого нет
Denis
Или ты про то что разные инстансы полезут модифицировать одинаковые данные тогда тебе надо очередь брать, тут база не при чем
Alexander
А зачем сервисам лочить друг друга? Монга обеспечит acid над данными
я значит что-то не понимаю, буду рад если поясните: мне казалась она не может это обеспечить. т.е. грубо говоря: - есть функция f1: прочитать что-то, посчитать (в коде) и обновить этот же документ - есть параллельный такой же f2. => он и оба прочитают вариант изначальный, но я бы хотел чтобы f1 залочилась пока f2 не отработает. Ну т.е. в рамках одного инстанса это как mutex.Lock
Alexander
нужно избежать repeated-reading
Alexander
Так, транзакция обеспечит атомарность. Правда читать в транзакции можно только с primary. Если тебе модифицировать только надо то юзай inc push и тд
сорян, я что-то не догоняю, но ведь в монге нету юзерных локов . т.е. параллельный код будет видеть старые данные (пока не обновлены)
Denis
сорян, я что-то не догоняю, но ведь в монге нету юзерных локов . т.е. параллельный код будет видеть старые данные (пока не обновлены)
Задачу опиши. Не понимаю толи ты не в курсе как в целом транз работают в любой бд, толи тебе очередь нужна (скорее)
Denis
Если тебе нужно распараллелить обработку документов, что параллельно разные обрабатывались, используй очередь (кафка реббит и тд). Чтобы обеспечить атомарность изменения одного документа и защититься от грязных чтений - используй транзакцию
Alexander
Задачу опиши. Не понимаю толи ты не в курсе как в целом транз работают в любой бд, толи тебе очередь нужна (скорее)
есть функция: func add(x): startTransaction() find(id = 1) newCount := calc() update(total = count) // например update(items.add(count + 1)) commitTransaction() return newCount+1 есть документ, например {id:1, total: 3, items:[1,2,3]} соответственно: два параллельный запуска fb(4) читают документ, получают одинаковый считают например items, получают 3 потом оба обновляют и оба возвращают 3
Denis
А то у тебя все N кронов будут лопатить одни и те же данные
Alexander
А то у тебя все N кронов будут лопатить одни и те же данные
да, так о том и речь, но по идее, mysql и лок на read тут же поможет?
Alexander
т.е. просто в монге не подвезли такого (что в общем-то имхо не проблема, я вообще первый раз в монге в транзакции лезу)
Denis
да, так о том и речь, но по идее, mysql и лок на read тут же поможет?
Как тебе лок размажет разные задания по разным воркерам?
Alexander
Как тебе лок размажет разные задания по разным воркерам?
он не даст сделать find(id = 1) (select) пока другая транзакция активна. ну т.е. по сути как mutex, но на уровне базы
Denis
Denis
Тогда последовательно делай в одном инстансе. Результат будет тот же с такой же скоростью. Надо параллельно- бери очередь
Alexander
В чем профит нескольких воркеров которые залочены одним мьютексом?
ну тут как говорится "код не мой", но консистенстность надо как-то соблюсти. Хотя я в целом как раз предлагаю им цвентральную точку чтобы самому этот lock делать.
Alexander
Тогда последовательно делай в одном инстансе. Результат будет тот же с такой же скоростью. Надо параллельно- бери очередь
очередь - всмысле очередь которая опять же идёт в один инстанс? т.е. тут суть не в очереди, а опять же в одной точке обработки по сути
Denis
Denis
А пишет в очередь 1 продюсер, айдишники которые надо обработать
Alexander
Нет, из очереди каждый воркер (консумер) читает свой id документа на обработку например
там к сожалению они все вероятно надо одним документом работают "код не мой :)"
Alexander
т.е. я понимаю что при распределении в этом смысла нету вообще, но распостранение воркеров есть и я с этим ничего не могу поделать
Alexander
А пишет в очередь 1 продюсер, айдишники которые надо обработать
ну по идее там в обе стороны связь, типа получить некий продукт, обработать-посчитать, посмотреть что всё ок, и тогда зарезервировать
Alexander
я в целом не очень понимаю как в данном случае очередь поможет, но я склоняюсь к единой точке
Alexander
Всем привет
Alexander
Как правильно сделать поиск по полю db.products.aggregate([{ $search: { 'text' : { 'query' : 'Bio', 'path' : 'name' } } }])
Alexander
?
Физик-ядерщик
Есть ли такая возможность в монге, чтобы документ "A" заимствовал определенные поля у документа "Б" ?
Физик-ядерщик