Promise.all([🥚, 🥚,
Если нужна локальность и атомарность на уровне документа, то почему не хранить все в юзере
Dmitry
Если нужна локальность и атомарность на уровне документа, то почему не хранить все в юзере
А потом приходит заказчик и говорит, что хочу ещё вот это и снова пойдешь в пользователя добавлять?
Promise.all([🥚, 🥚,
Просто сейчас вообще невозможно сделать предположение, что речь идёт о каких-либо больших данных
Arthur
А с чего вывод, что это множество валют = большое данные?
ну он там написал "оооочень много балансов" ) хотя, скорее всего, там будет до сотни элементов
Dmitry
Ну да
Мб тогда всю БД хранить в одной коллекции?
Promise.all([🥚, 🥚,
Мб тогда всю БД хранить в одной коллекции?
По твоей логике, может тогда вообще не использовать nosql?
Promise.all([🥚, 🥚,
Зачем брать монгу, и по умолчанию пытаться использовать ее полностью как sql бд, нормализуя все данные
Promise.all([🥚, 🥚,
Короче сейчас нет ни одного предположения, по которому это поле с балансами имеет смысл выносить в отдельную коллекцию
Dmitry
По твоей логике, может тогда вообще не использовать nosql?
А причем тут моя логика? Ни кто не говорит, что надо брать NoSQL и использовать, как SQL. Мой посыл в том, что иногда легче завести дополнительную коллекцию, по которой быстро пробежался дополнительным запросом и всё на этом. Вот если представить, что заказчик попросит, чтобы по умолчанию у пользователя сразу было про инициализированы валюты с балансом 0. Возможные проблемы в будущем: 1. Массив объектов, который вроде не вместиться (но это не точно) т.к. каждый объект это -1 уровень, а их всего вроде бы 100. 2. Размер файла, ну тут 50/50 т.к. хз сколько места занимать будет. 3. Вроде нельзя создать индекс у таких массив + там ограничение на количество элементов. (Но это не точно, мб что-то поменялось) Как по мне лучше на один запрос больше отправить в дополнительную коллекцию, чем потом избавляться от массива с объектами и переписывать запросы.
Promise.all([🥚, 🥚,
Ключевое тут, что иногда Само собой, в реальности это вопрос компромиссов и конкретных ситуаций
Promise.all([🥚, 🥚,
Но в общем виде да, монга именно про это
Promise.all([🥚, 🥚,
А потом приходит заказчик и говорит, что хочу ещё вот это и снова пойдешь в пользователя добавлять?
Promise.all([🥚, 🥚,
Там где возможна локальность данных, предпочтение должно отдаваться ей, а не связям
Promise.all([🥚, 🥚,
Просто рассматривая конкретную ситуацию, это ничем не обосновано
Promise.all([🥚, 🥚,
разная валюта
Promise.all([🥚, 🥚,
один юзер может иметь несколько валют к примеру
Promise.all([🥚, 🥚,
В отдельную тогда
Vladyslav
Regex
yopp
Здравствуйте есть юзеры и есть баланс юзера (очень много балансов) хранить это все в одной коллекции (инфа юзера, балансы) или вынести балансы в отдельную коллекцию?
С точки зрения корректности учетёта, баланс это агрегация всех транзакций по счёту. Наиболее надежным будет хранение операций, плюс «баланс» как вариант агрегированной суммы всех операций. Т.е отдельная коллекция с операциями по счёту формата currency_id, account_id:, amount (целое число или decimal128), плюс или отдельная коллекция со счетами user_id, currency_id, balance, или вложенный массив документов. Операции со счетами проводить через две коллекции, в транзакции
Vladyslav
Можно просто использовать простой find, и 2 параметра. Реджекс для вашей задачи что-то на подобии: /. Sache. /
Vladyslav
Необязательно использовать сам $regex
Vladyslav
Для вашей задачи find подойдёт тоже с простой регуляркой
Vladyslav
find({name: /.abc ./, prop: 'text'})
Vladyslav
через запятую, 2 параметр просто прокидывйте
Vladyslav
название вашего свойства
Vladyslav
тоже
Vladyslav
что за бред в синтаксисе?
Vladyslav
ну так гляньте какой синтаксис я кинул и сравните со своим
Vladyslav
у вас же не запустится даже
Vladyslav
/.*f*./
Vladyslav
звездочки забыл)
Vladyslav
вы уверены что у вас есть такие данные и что свойство правильно названое?
Vladyslav
кидайте скрин
Vladyslav
киньте скрин данных
Vladyslav
большую F дайте и найдет
Vladyslav
либо i в конец, тоже решение
Vlad
как фиксить?
p4ihiua
p4ihiua
Подскажите, что требуется запуска монго? Изначально был статус 14,после 100/n/a, после 217, теперь 100
Dmitry
Вроде нет прав на изменение файла
4R7
ребят а монго можно как-то установить к себе на локалку ? а то они мои базы удалили
p4ihiua
Вроде нет прав на изменение файла
а какого именно? (я новичек в этом, для меня этот лог == китайские иероглифы)
Dmitry
Но с докером проще иногда
Dmitry
limit и skip
Abdulaziz
Привет от запроса приходит список ID у кого надо обновить одно поле, можете подсказать что нужно использовать для этого? например req.body.studentIDs (['U2010165', 'U2010124']), надо изменить поле каждого чей id есть в списке
Vlad
Здравствуйте можно указать role в схеме в зависимости от другого свойства к примеру если тип 1 роль гость если тип 2 роль пользователь?
Евгений
всем привет, можете объяснить что за ошибка : { "index": 0, "code": 11000, "keyPattern": { "email": 1 }, "keyValue": { "email": "666.com" } } ?
yopp
всем привет, можете объяснить что за ошибка : { "index": 0, "code": 11000, "keyPattern": { "email": 1 }, "keyValue": { "email": "666.com" } } ?
Код 11000 это duplicate index error. Предположу что в коллекции есть уникальный индекс по полю email и есть есть документ с email: “666.com”
Abdulaziz
Привет прочитал про пайплайн $cond, а как можно туда где then ничего не делать, если условие дает true
Игорь
Здравствуйте можно указать role в схеме в зависимости от другого свойства к примеру если тип 1 роль гость если тип 2 роль пользователь?
Если вопрос такой "Можно ли записать определённое значение на основе другого поля", то посмотрите $switch
Dmitry
Ну есть, но ведь в модели не указано что оно должно быть уникальным
Это не важно т.к. в самой бд уже добавлен индекс
Евгений
Это не важно т.к. в самой бд уже добавлен индекс
Да я уже понял, оказывается если ранее было добавлено unique то создаётся index, и его нужно удалять если не нужно уникальное значение
Dmitry
Там можно доп условия прописать. Мне на пример надо было, что если не null, то поле уникальным должно быть
nefertisu
привет, такой вопрос, хочу собрать данные из двух таблиц у первой таблицы 1.текст 2. айдишник пользователя 3. айдишник комнаты у юзера какой-то ещё набор полей и имя как мне сделать агрегацию что бы финальная колекция была просто с текстом и именем юзера?
nefertisu
берете $lookup и связыаете по идшникам
чёт не получается найти нормальный пример…
Nick
чёт не получается найти нормальный пример…
https://www.mongodb.com/docs/manual/reference/operator/aggregation/lookup/#equality-match-with-a-single-join-condition и далее все варианты
nefertisu
https://www.mongodb.com/docs/manual/reference/operator/aggregation/lookup/#equality-match-with-a-single-join-condition и далее все варианты
спасибо, получилось 🙂 но остался последний вопрос на который пока что не получается найти пайпу (это вроде так называется) это из финального набора данных который сделать новый массив в котором будут только специфичные поля
D
Как правильно выполнять поиск дробных значений? 1 скрин: $match {Price: 1} – все ок 2 скрин: $match {Price: 8.1} – нулевой результат Price в decimal128
Ilya
Как обычно — не пытаться сравнивать floating point через =. Это сложно, больезненно и чаще всего абсолютно ненужно. (Этот совет, кстати, не от mongodb, это везде так с числами с плавающей точкой).
D
Как обычно — не пытаться сравнивать floating point через =. Это сложно, больезненно и чаще всего абсолютно ненужно. (Этот совет, кстати, не от mongodb, это везде так с числами с плавающей точкой).
Благодарю за ответ, Илья! В данном кейсе я пытаюсь посчитать сумму оставшихся позиций на «бирже» по определенной цене. Важно, чтобы цена была точной. Если делать это не через $match: { price: 0.1}, то какие есть еще варианты получить точный результат? p.s. я попробовал через операторы сравнения $gte и $lte сделать выборку, но кажется это все та же история про =.