Nicat
Покажи схему
вот схема
Dmitry
Не используй Array
Dmitry
String / Number / Boolean, а остальные забирай из mongoose.Types.Schema.Ну и тут нужный тип
Dmitry
По пробуй сначала Mixed, если поможет, то создай схему и подключи её к этой схеме и сделай, чтобы она была массивом
Nicat
я нихрена не понимаю, можно ссылку на ресурс , где всё это есть?
Dmitry
А что тебе не понятно?
Dmitry
Замени chanceMassive: {type: Array} на chanceMassive: {type: mongoose.Types.Schema.Mixed}
Nicat
блять неужели невозможно изменить массив из объектов
Dmitry
Можно т.к. куда тебя посылал, у человека всё сработало
Nicat
может быть я неправильно вызываю функцию
Nicat
попытался вызвать updateMany(), один чел написал что ему это помогло ,у меня же выбросило ошибку что это не функция
Nicat
Dmitry
Лучше $in использовать, чем $or
Nicat
Лучше $in использовать, чем $or
с апдейтом бы разобраться сначала...
Nicat
документ находится так что, ор или ин проблема не в этом
nortimg
привет, в mongodb есть структура типа Set? мне надо сохранить массив уникальных значений, чтобы их потом обновлять было легко
Hannibal
Так тоже не работает
Hannibal
Что именно?
возвращает пустой массив, несмотря на совпадения
Dmitry
return obj.tags === producttag
Nick
возвращает пустой массив, несмотря на совпадения
ну и к тому же сравнивать массив с одним тегом такое себе
Hannibal
Ты ничего не return
Все было еще хуже — я не заловеркейсил все, поэтому и возвращался пустой массив. Огромное спасибо, бесценный опыт
Hannibal
ну и к тому же сравнивать массив с одним тегом такое себе
А как будет лучше? Мне нужно получить все объекты нужной категории из массива
Nick
А как будет лучше? Мне нужно получить все объекты нужной категории из массива
если у вас tags массив, то каконйить tags.include(tag), а то очень странно выглядит
Hannibal
А уже у них tags, строка
Nick
А уже у них tags, строка
это строка? хех тогда мой коммент нерелевантен
Hannibal
это строка? хех тогда мой коммент нерелевантен
Да, у них там лишь по одной категории возможно Спасибо за отклик
C
Есть проблема, что при таком описании схемы, я соответственно не могу нормально популейтить внутри нее различные филды. Тут вопрос, можно ли как-то описать её корректно, учитывая что у меня эта дата может иметь разные варианты? Условно она может быть {text: String} , но может быть и {count: Number}
C
Правильно понимаю, что это SubSchema?
Похоже на Subdocument, да. Пошерстил нет, но не нашел какого-то аналога к возможностям ТС. Только рекоммендацию использовать Discriminator
C
А чем вас Generic не устраивает?
Вы о mixed? С ним тоже монга не понимает что популейтить, даже с strictPopulate: false
Dmitry
Node замените на Node<T> Record<sting, any> замените на Record<string, T>
Alexandr
Привет всем. У меня есть массив обьектов(музыка) и в каждом есть числовое значение duration. Так же у меня есть обьект(альбомов), который связывает между собой обьекты(музыки). Как можно вывести общее кол-во duration в обьекте(альбомов)? Я вывел кол-во музыки в альбоме через aggregate, но не понимаю как это сделать с duration:
Alexandr
Dmitry
$group и в нем используй $sum
Alexandr
$group и в нем используй $sum
Спасибо. Уже сделал
Сароар🧑🏼‍🦱
db.words.find().forEach(function(doc) { db.new_words.insert({ "icon": doc.icon, "english": { "word": doc.englishWord, "definition": doc.englishDefinition }, "russian": { "word": doc.russianWord, "definition": doc.russianDefinition }, "bangla": { "word": doc.banglaWord, "definition": doc.banglaDefinition }, "isReadFromNotification": false, "isReadFromView": false, "level": doc.level, "userId": doc.userId, "isActive": false, "isComplete": false, "createdAt": doc.createdAt, "updatedAt": doc.updatedAt, }) });
Сароар🧑🏼‍🦱
иногда russian defination missing someing bangla defination sometime english defination что та не так мой код?
Валентина
Друзья, я юзаю Express на бэке, ejs на фронте, passport.js для oAuth и Mongoose для СУБД. Есть проблема с тем, что когда я обновляю данные о юзере ( через метод .save() ) то у меня passportJS выкидывает юзера из сессии, то есть слетает авторизация у него и тем самым при дальнейшем взаимодействии с фронтом, где требуется аутентификация юзера, то соответственно выпадает ошибка 201. Кто сталкивался с подобной проблемой или есть кейсы решения? Почему при обновлении каких-либо данных в объекте текущего юзера - слетает авторизация
Apollo11
Ejs ещё актуален в 2022 ?
Валентина
Валентина
Я просто думаю может ли это быть как-то связано с тем, что я обновляю полностью объект пользователя, а не только те части, которые нужно
iWatchYouFromAfar
ребят, подскажите пожалуйста, на сервере запущена mongo в контейнере докера, база данных почти не используется, там порядка 6 коллекций и около 50 записей, которые иногда удаляются и добавляются новые, за месяц волюм mongodb вырос на 80мб, из-за чего такое может происходить?
iWatchYouFromAfar
даже за сегодня заметил рост волюма с 520мб, до 520.2мб
Валентина
Спасибо конечно за совет, но просьба была в помощи решения тех.задачи, а не последствий, которые и так понятны, уже было исправлено, пропуск был важной функции authenticate() из-за чего пасспорт.жс не мог индефицировать какую стратегию использовать при данном роуте
spectrum
Всем привет. Как я понял из документации mongodb ограничивает размер одного документа 16ю мегабайтами. От чего у меня возник вопрос: на практике, это ведь очень большой документ с огромной вложенной структурой? Если я моделирую базу под чаты (с не очень активной перепиской), то большого смысла разбивать чаты и сообщения две разные коллекции нет? 16 мегабайт это поидее тысячи вложенных сообщений, если реализовать через вложенные документы. И количество документов в коллекциях не будет активно расти, что наверное тоже плюс. Или я в чем то ошибаюсь?
Vladyslav
Какое ограничение?
100 "вложености". Точнее, ее то можна превисыть, но будут проблемы с производительностью и тд
Eshu
Всем привет. Как я понял из документации mongodb ограничивает размер одного документа 16ю мегабайтами. От чего у меня возник вопрос: на практике, это ведь очень большой документ с огромной вложенной структурой? Если я моделирую базу под чаты (с не очень активной перепиской), то большого смысла разбивать чаты и сообщения две разные коллекции нет? 16 мегабайт это поидее тысячи вложенных сообщений, если реализовать через вложенные документы. И количество документов в коллекциях не будет активно расти, что наверное тоже плюс. Или я в чем то ошибаюсь?
Не надо реализовывать через вложенные документы. Если проект вырастет, а потом потребуется статистика по сообщениям или ещё какая инфа из них - выкапывать ее будет очень больно и очень медленно. Сталкивался с точно таким решением в живую, это - идеальный пример как делать не надо.
spectrum
Понял. Спасибо всем за пояснения. 🍻
spectrum
Однако хотелось бы уточнить пару моментов.)
spectrum
100 "вложености". Точнее, ее то можна превисыть, но будут проблемы с производительностью и тд
Речь же идёт не про количество вложенных документов, а про уровни вложености? Т.е не более 100 уровней в глубину может быть вложенность. Про это ограничение идёт речь?
Vladyslav
a b c q : a1, a2 пример json = тут будете иметь 6 "вложености"
spectrum
a b c q : a1, a2 пример json = тут будете иметь 6 "вложености"
Почему-то в доке речь идёт именно про вложенность, а не про свойства. Т.е когда в документе появляются вложенные объекты или массивы.
spectrum
Vladyslav
Каждый обьект.... еще раз прочтите
spectrum
Каждый обьект.... еще раз прочтите
Я понял. Но не обычное поле. В вашем примере a, b, c это отдельные объекты?
Vladyslav
это все 1 модель, вдруг что
spectrum
это все 1 модель, вдруг что
Понял. Спасибо за пояснения!
spectrum
Не надо реализовывать через вложенные документы. Если проект вырастет, а потом потребуется статистика по сообщениям или ещё какая инфа из них - выкапывать ее будет очень больно и очень медленно. Сталкивался с точно таким решением в живую, это - идеальный пример как делать не надо.
Понимаю что для большинства практиков здесь это очевидно, но буду благодарен если поясните в чем существенное отличие разделения коллекций чатов и сообщений вместо использования одной сборной со сложной структурой. Особенно где столкнулись с проблемами. Это бы очень помогло сделать меньше ошибок.
Aram
Господа светлые умы с миллионным IP, подскажите, пожалуйста, есть ли mongo/mongoose какой-нибудь один метод, который создаёт документ, если он не существует, но при этом не падает с ошибкой дублирующего уникального ключа и не совершает upsert
Cloud
нету просто проверь заранее, существует ли такой документ или ошибку обрабатывай
iWatchYouFromAfar
Это могут быть логи
Логи контейнера?