Promise.all([🥚, 🥚,
Как итог, по причине того, что запроса два, и первый вытягивает данные о улучшении, если отправить множество запросов друг за другом, то условно может купить не 10 улучшений, а намного больше. Может кто знает, что делать в такой ситуации? Я пытался как-то построить это одним запросом, но так и не удалось. Пока вижу вариантом только сделать улучшения вложенными объектами, а не работать с ссылками. Заранее спасибо
Josh
По монгусу особо не помогу в таких деталях
https://docs.mongodb.com/manual/changeStreams/ обертка вот этого, оно ведь с бд шлет изменения в сокет да?
Promise.all([🥚, 🥚,
bulkWrite?
Спасибо, почитаю
Josh
ну и все, классно, никакой серверлесс не нужен, одна абстракция накидывает данные (бот телеги, веб) другая занимается процессингом при изменении, в итоге идёт разделение архитектурно
Josh
еще, обычно для таких задач используют очередь
или мидлварки, или паттерн команду, но нет, нужно именно разделить логику, хочу вывести телегу на вью респонд абстракцию
Josh
если речь про amqp какой-нть, да, в курсе, но оверхед для задачи че-т тоже, сам сделаю
Олег
если речь про amqp какой-нть, да, в курсе, но оверхед для задачи че-т тоже, сам сделаю
да, например про него не сильно там и большой оверхед, у нас на нескольких серверах стоит, и все гуд
yopp
bulkWrite?
BulkWrite это механизм сетевой оптимизации: группировка множества операций в одну команду. В самом монге операции будут выполнятся так-же если бы они по отдельности пришли. Это не имеет совершенно никакого отношения к каким либо гарантиям
yopp
если речь про amqp какой-нть, да, в курсе, но оверхед для задачи че-т тоже, сам сделаю
AMQP это механизм очередей с гарантиями доставки. ChangeStream это механизм уведомления об изменениях, без каких либо гарантий и ограниченным окном. Это обертка вокруг оплога
yopp
... я тебя наверное разочарую сейчас, но стабильность и гарантии, есть только в одном месте .... это кладбище со всем остальным нужно разбираться и работать
Я не понимаю что вы хотите сказать. BulkWrite никаким образом не помешает двум запросам в группе выполнится параллельно в произвольном порядке. Как следствие никаких гарантий целостности данных bulk write не представляет и озвученную проблему никак не решает. Более того, этот механизм предназначен для сетевой оптимизации большого потока маленьких записей. Никакого другого применения у него нет. Начиная с 4.0 в монге появились гарантии для множественных операций которые могут затрагиват несколько документов. Называется транзакции.
yopp
Озвученную проблему можно решить или транзакциями или 2 phase commit. Лучше транзакциями. 2 phase commit адски сложно реализовать
yopp
Ещё можно пересмотреть логику в пользу индемпотентных операций
Dmitriy
@dd_bb а подскажите, пожалуйста, а есть ли где-то подробная информация о field level encryption? прочитал в релизе о этой новой фиче, но без каких-либо подробностей, а хочется узнать поглубже
Dmitriy
Ага, спасибо
Josh
AMQP это механизм очередей с гарантиями доставки. ChangeStream это механизм уведомления об изменениях, без каких либо гарантий и ограниченным окном. Это обертка вокруг оплога
я в курсе за amqp, речь шла ведь уже о прикладном характере уже решения задачи А вот про окно интересно, настраивается? Крч как и предполагал, оплог средствами бд дискретно срезается и выдается в поток, да?
Josh
и накой тогда я эту реплику делал :3 примерно такая же долбежка в бд, только в другом месте и не своими силами
yopp
я в курсе за amqp, речь шла ведь уже о прикладном характере уже решения задачи А вот про окно интересно, настраивается? Крч как и предполагал, оплог средствами бд дискретно срезается и выдается в поток, да?
Это чуть более человечная обертка вокруг ручного создания tailiable курсора в rs.oplog коллекцию. Исчерпывающая спецификация: https://github.com/mongodb/specifications/blob/master/source/change-streams/change-streams.rst
Josh
да, например про него не сильно там и большой оверхед, у нас на нескольких серверах стоит, и все гуд
сорь за офтоп затянувшийся, https://stackoverflow.com/questions/3164821/amqp-or-xmpp-for-real-time-online-games там на ребит жалуются, а вы что юзаете?
Олег
если речь про кролика
Josh
9 лет прошло с обсуждения, возможно поэтому
Dmitriy
у rmq есть проблемы при большом потоке обрабатываемых событий, но опять же rmq надо уметь готовить. в моей практики 100К событий обрабатываются без проблем. если у вас миллионы событий и вы не используете dlx, то вам стоит посмотреть в сторону кафки
Dmitriy
обрабатываем милионы событий, не используем dlx, и не испытываем проблем
я же не говорил обратного и выше об этом написал, rmq надо уметь готовить. при правильной конфигурации он может показать очень многое
Dmitriy
кластер это уже не дефолтная конфигурация)
Олег
кластер это уже не дефолтная конфигурация)
тут не уточнялось, с одной нодой или нет )))
Dmitriy
а сверху на кластер еще хапрокси поди прикручен, чтобы балансировка была корректная
yopp
Это не профильный канал для этого обсуждения
Nick
обрабатываем милионы событий, не используем dlx, и не испытываем проблем
Насколько больших, на каких дисках, и всетаки какой пиковый рпс
nzjdMFpV
Ой сап Подскажите пожалуйста, как импортировать .db файл в свой монго сервер, что ли. Просто мне скинули .db файл с содержимым монго базы, и я не понимаю как мне начать с ним работать
Fire Walker
Из него json экспортируй
nzjdMFpV
Так у меня же есть уже файл, мне нужно его ИМПОРТировать в свой монго сервер
Олег
Насколько больших, на каких дисках, и всетаки какой пиковый рпс
диски, самые простецкие пиковый рпс не замеряли, не было необходимости
yopp
у mmapv1 будут цифры
yopp
у wiredtiger будет wt
Alexey
Добрый день! Может кто сталкивался, в чем может быть проблема? База просто перестает отвечать и iowait процессора 100%. Зависимости от нагрузки нет, kern.log в скринах
Alexey
Alexey
yopp
если есть возможность, то сделайте трейс на io операции
madspectator
Как в агрегации монги отфильтровать документы, у которых содержимое заданного поля не удовлетворяет регекспу?
madspectator
Мне надо что-то типа этого (так не работает): db.host.aggregate([ {$not: {status: /^EXP DATE: [0-9]/}}, {$group: {_id: "$status", count: {$sum: 1}}} ])
madspectator
{$match: {$not тоже не работает
AstraSerg
тогда более конкретно: https://docs.mongodb.com/manual/reference/operator/query/regex/#regex-and-not
yopp
А, тьфу. Регулярка
Odiljon
Добрый день. Подскажите пожалуйста, как получить массив строк из одного параметра всех документов. Например: Модель выглядить так: const CategorySchema = mongoose.Schema({ _id: String, priority: Number, yaml_def: String, }); мне нужно получить массив со всеми "yaml_def"
Odiljon
Я новичок. Пробовал делать так const categories = Category.find({}).select('yaml_def -_id'); но получаю массив объектов.
Nick
Добрый день. Подскажите пожалуйста, как получить массив строк из одного параметра всех документов. Например: Модель выглядить так: const CategorySchema = mongoose.Schema({ _id: String, priority: Number, yaml_def: String, }); мне нужно получить массив со всеми "yaml_def"
Если нужно обязательно один документ, то вам аггрегат с группировкой и addToSet. Если дос аточно просто выбрать все доки и у каждого оставить только э о поле, то используйте такую штуку как https://docs.mongodb.com/manual/tutorial/project-fields-from-query-results/
Nick
Забыл добавить, что Если нужно чтобы повторялось то push, чтобы уникальные то addToSet
Bro
утро доброе
Bro
а есть такой же но про редис?
Й
/ban
Ruslan
Всем привет! Помогите кто сталкивался, как в монге найти номер объета, в массиве объектов, по _id объекта.
Ruslan
Всем спасибо если кому интересно будет $indexOfArray
Ruslan
Что то, смотрю, последнее время мало кто помогает, одни блондинки отвечают ))
Ruslan
Какой вопрос - такой ответ
Ruslan
Ну так не школьники что бы всё разжёвывать, простейшая ситуация то индекс найти у объекта в массиве ))) наверняка, такое кто-то уже делал, ну а если ни кто не делал то шпаргалка выше.
Й
Перелогиньтесь)
Alexandr
Добрый день всем. Подскажите пожалуйста что можно попробовать, нужно сконвертировать значение поля типа Double в тип String в агрегации. Версия монги 3.6, поэтому $toString и $convert не работают. Нашел решения в виде $substring и $toLower, они работают, но если число большое, то получаеться на выходе что-то вроде этого 1.55609e+06. Можно ли как-то по-другому это сделать или форматнуть такую строку? Не нашел решения(
Dmitriy
ребят, вопрос, имею коллекцию содержащую документы примерно следующей структуры: { "type": "type1", "amount": 10 } { "type": "type2", "amount": 3 } { "type": "type3", "amount": 4 } { "type": "type4", "amount": 7 } возможно ли в монге выполнить одним запросом операцию следующего рода: прибавить к полю amount документа с типом type1 поле amount документа с типом type4 и вычесть из полученной суммы сумму полей amount документов с типом type2 и type3? или в данном случае проще на уровне приложения такое реализовать?
Fire Walker
Выскажу своё мнение: проще реализовать на уровне приложения. Как, собственно, все и делают
Alexey
если цель выучить агрегации, то можно и одним запросом 🙂 иначе незачем
Dmitriy
про сделать на стороне приложения это понятно, уже так и делаю. интересно было в образовательных целях понять возможно это сделать запросом на стороне монги или нет, и если возможно то как)