Сергей
Или что то иное сейчас стоит делать?
Josh
Josh
милиард косяков и сложностей с этим, но зато везде пишут, что да-да, надо использовать массив, потому что с ним удобней работать, уххххх неделю долблюсь с удобством, обтекаю
Josh
кстати, я как-то заказывал вок с доп ингридиентами и в чеке отображался весь перечень допов, т.е. так и было: штук 20 полей с нулями и по единичке мои.
Вот к чему приводит такой подход с неиспользованием массивов, зато сделали и голова не болит, чего не сказать о душе!
Josh
гретта наверн ворочается от такого перерасхода бумаги в чеках
Josh
ковыряю https://play.db-ai.co/m/XchUt2jklgABiNax
yopp
yopp
Прочитали документ, на клиенте высчитали новое состояние, записали через $set
yopp
Будет LWW
Josh
Josh
пока затык, но как-то так
yopp
$addToSet будет проверяет совпадение сравнением значения массива. Т.е идентичнность двух документов. Даже порядок полей будет играть роль
Josh
потому $inc и нужен, но он не отработает без наличия самого элемента и надо вставку как-то посреди влепить
yopp
yopp
Retry
yopp
Оптимистичную блокировку делаете по дате обновления и все
yopp
Nmatched 0 делаем retry
Josh
и что делать с режектами? повторять долбежку? а если сервис упал.. костыль
yopp
Никакого костыля
yopp
Это простой как палка механизм который очень просто работает
Josh
ну сервис упал, пользователь надобавлял предметов, а добавления потерялись из-за блокировки
Josh
а это значит их где-то надо сейвить все равно, хотя бы просто вставкой
yopp
Josh
я потому про мердж и вспомнил, может изначально пушить только, а потом воркером мержить
yopp
Josh
yopp
Не пытайтесь crdt поверх монги делать
yopp
Josh
мне кажется что это плохой способ хранения инвентаря вообще, наверное стоит завести коллекцию отдельную
yopp
Если вы в эту второго смотрите, то смотрите уже на готовые решения типа redux/logux
yopp
Если вы хотите оффлайн состояние мержить с монгой
Josh
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?
Какую хорошую книгу или ресурс можно почитать?
Можно и видео-уроки хорошие, если есть?
Мне нужно разобраться с этим сегодня/завтра. Что-то подсказывает мне, что это дольше разбираться нужно, чтобы нормально сделать работу. :-)
Спасибо.
Bohdan
слишком страшное нечто получается для меня: 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}]}]}
а оно что-то возвращает как транзакция к БД?)
Bohdan
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’}
но она не работает
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" должны приводить к созданию документа в соседней коллекции?
Nick
Nick
Nick
Nick
но лучше подумать зачем вам это
Nick
задача вообще какая?
Nick
Lev
зачем?
По бизнесу надо. Чтобы чтобы посмотреть что когда кто изменял и была возможность отката (одного документа а не ивент соурсинг).
Nick
Lev