Сергей
Или что то иное сейчас стоит делать?
Josh
https://play.db-ai.co/m/XchJemjklgABiNab
@dd_bb не выходит крч
Josh
милиард косяков и сложностей с этим, но зато везде пишут, что да-да, надо использовать массив, потому что с ним удобней работать, уххххх неделю долблюсь с удобством, обтекаю
Josh
кстати, я как-то заказывал вок с доп ингридиентами и в чеке отображался весь перечень допов, т.е. так и было: штук 20 полей с нулями и по единичке мои. Вот к чему приводит такой подход с неиспользованием массивов, зато сделали и голова не болит, чего не сказать о душе!
Josh
гретта наверн ворочается от такого перерасхода бумаги в чеках
Josh
ковыряю https://play.db-ai.co/m/XchUt2jklgABiNax
yopp
Прочитали документ, на клиенте высчитали новое состояние, записали через $set
yopp
Будет LWW
Josh
а вот так нельзя?
Josh
пока затык, но как-то так
yopp
$addToSet будет проверяет совпадение сравнением значения массива. Т.е идентичнность двух документов. Даже порядок полей будет играть роль
Josh
Прочитали документ, на клиенте высчитали новое состояние, записали через $set
так нельзя, могут два входа в одну асинхронку прийти и два изменения по +1 в итоге отработают как одно
Josh
потому $inc и нужен, но он не отработает без наличия самого элемента и надо вставку как-то посреди влепить
yopp
Retry
yopp
Оптимистичную блокировку делаете по дате обновления и все
yopp
Nmatched 0 делаем retry
Josh
и что делать с режектами? повторять долбежку? а если сервис упал.. костыль
yopp
Никакого костыля
yopp
Это простой как палка механизм который очень просто работает
Josh
ну сервис упал, пользователь надобавлял предметов, а добавления потерялись из-за блокировки
Josh
а это значит их где-то надо сейвить все равно, хотя бы просто вставкой
Josh
я потому про мердж и вспомнил, может изначально пушить только, а потом воркером мержить
Josh
Это ужасно
ну понадежней
yopp
Не пытайтесь crdt поверх монги делать
Josh
мне кажется что это плохой способ хранения инвентаря вообще, наверное стоит завести коллекцию отдельную
yopp
Если вы в эту второго смотрите, то смотрите уже на готовые решения типа redux/logux
yopp
Если вы хотите оффлайн состояние мержить с монгой
Josh
чтобы не городить блокировок, лучше действительно сделать коллекцию отдельную и потом агрегировать, это значительно проще и наглядней, немного не по канонам носкула, но раз такой гимор с массивами, то в данной задаче оправдано я считаю
Oleg
привет, что то не понимаю как сделать так, чтобы аутентификация проихсодила не в базе admin, а в другой базе. это что создавать новую сущность User в другой базе?
Anonymous
Коллеги, есть тут жабисты? Сотворил недавно такой запрос, а он оказывается молча фигню отдаёт.... т.е. синтаксически ОК, а нужное не находится.
Anonymous
Bson filter = and( and(attrsFio), or( eq(and(attrsBd)), eq("passport", passport) ) );
Anonymous
в двух массивах составлены ФИО из трех полей и ДР из 3 полей. List<Bson> attrsFio = new ArrayList<>(); attrsBd.add(eq("by", 1990)); итд
Anonymous
смысл, наверняка понятен: найди мне могучая монга васю пупкина с др ляля ИЛИ паспортом куку
Bohdan
если у приблуды которую ты юзаешь есть возможность посмотреть в какую конкретную кверю транслитится код, попробуй выполнить его на уровне монго шела
Bohdan
может синтаксически там что-то не ОК
Anonymous
слишком страшное нечто получается для меня: And Filter{filters=[And Filter{filters=[Filter{fieldName='name_f', value=пупкин}, Filter{fieldName='name_i', value=василий}, Filter{fieldName='name_o', value=иваныч}]}, Or Filter{filters=[Filter{fieldName='_id', value=And Filter{filters=[Filter{fieldName='by', value=1999}, Filter{fieldName='bm', value=9}, Filter{fieldName='bd', value=9}]}}, Filter{fieldName='passport', value=0000000000}]}]}
Anonymous
😭
ᅠ ᅠᅠ ᅠᅠ ᅠᅠ Alex S.
Привет. Может кто-то подсказать по такому вопросу/вопросам: Мне досталась по работе в наследство база учеников. С монго я никогда раньше не работал. Немного почитал, как делать запросы, брать инфу из первого запроса и делать второй запрос. Установил Robo3T или Robomongo (точно сейчас не скажу). Вопрос у меня такой возник - в IDE есть поле Functions. На сколько я понял, то внутри базы можно писать функции и потом их вызывать? Или это сделано для удобства построения запросов и переноса на BackEnd? Какую хорошую книгу или ресурс можно почитать? Можно и видео-уроки хорошие, если есть? Мне нужно разобраться с этим сегодня/завтра. Что-то подсказывает мне, что это дольше разбираться нужно, чтобы нормально сделать работу. :-) Спасибо.
Anonymous
а оно что-то возвращает как транзакция к БД?)
на стэковерфлоу подсказали... тут eq не нужен . eq(and(attrsBd)) и всё заработало 🤦🏻‍♂️
Anonymous
Bson filter = and( and(attrsFio), or( and(attrsBd), eq("passport", passport) ) ); глаз замылился похоже, нафиг оно там было
Никита
это чистый монго-драйвер?
Anonymous
Да, api 3.4 , синтаксис такой
Alex
Народ, можете посоветовать интересный курс по монге?
Max
Привет чат. Понадобилось настроить шард, полез в доки, стал настраивать кластер с репликой. в общем вторую неделю своим чередом ковыряюсь. Возникло несколько тривиальных вопросов. Например - 3 конфиг сервера действительно оправданы? или делают 1-2 и пофиг?
Max
И если основные шарды на ssd, делать реплики на hdd - выстрел в ногу из-за лага или прокатит, зависит от нагрузки?
Alexandr
как отдельну коллекцию, лучше больше небольших документов, чем один большой
Aleksei
в 4.2 для Change streams majority concern должен быть выключен? почему то не работают
Bohdan
😂😂😂
Bohdan
это уже клиентская часть
Nick
В монге один док не может быть больше 16мб, так что вы можете упереться в это со своими миллионами
Askhat
Ребят, всем привет. Как такое фиксить? в Mongo Atlas появилось Disk I/O % utilization on Data Partition has gone above 90 on nvme1n1 <shard_url>
Yaroslav
Всем привет, сталкндуся с тем что монга отжирает 60 процентов ресурсов сервера когда исполняет bulk insert
Yaroslav
Чем можно это лечить?
λ
Чем можно это лечить?
А если не использовать балк? :)
λ
Подскажите, у меня есть 2 коллекции с одинаковым ID. Как можно максимально эффективно склеить результат?
Dmitry
привет. Вопрос к спецам по запросам: Хочу из текущей структуры { "_id" : "0000.0000.0000.0000.0000.0000.0000.0000", "leika" : [ { "value" : 9, "parameter" : "id22" }, { "value" : 14, "parameter" : "id27" }, …… { "value" : 3, "parameter" : "id4" }]} Получить такую: { "_id" : "0000.0000.0000.0000.0000.0000.0000.0000", "leika" : {id22: 9, id27:14,….,id4:3} в документации нашел функцию - {$arrayToObject: "$field’} но она не работает
Anonymous
Всем привет, сталкндуся с тем что монга отжирает 60 процентов ресурсов сервера когда исполняет bulk insert
А что не нравится? Вообще, при вставке видел и 200-300% загрузки и скорость больше миллиона вставок в сек. Если надо чтобы параллельные поиски не тормозили, можно троттлить паузами между вставками. Приоритеты в монгу вроде не завезли.
Dmitry
ошибка функции: Command failed with error 40393 (Location40393): ’$arrayToObject requires an object with keys ‘k’ and ‘v’. Missing either or both keys from: {name: “0”, count: 0}' on server
Lev
А в монго нету автоматизации журналирования изменений?
Lev
Типа "CREATE UPDATE DELETE" должны приводить к созданию документа в соседней коллекции?
Lev
триггеров нет
Альтернатива? Ручками писать на бекенде?
Nick
но лучше подумать зачем вам это
Nick
задача вообще какая?
Lev
задача вообще какая?
Вести историю изменения документов
Lev
зачем?
По бизнесу надо. Чтобы чтобы посмотреть что когда кто изменял и была возможность отката (одного документа а не ивент соурсинг).