Anonymous
Anonymous
Andrey
Парни помогите со схемой или подскажите более правильный способ вставки или обновления документов:
Есть, документы типа, "группирующий" _id, поиск будет осуществлять по нему:
{
"_id" : 5,
"quizzes" : [
{ "wk": "1", "zk": "somevalue1", "score" : [111] },
{ "wk": "2", "zk": "somevalue2", "score" : [222] },
{ "wk": "3", "zk": "somevalue3", "score" : [333] },
{ "wk": "4", "zk": "somevalue1", "score" : [444] },
{ "wk": "5", "zk": "somevalue5", "score" : [555] }
]
}
Хочу при вставке в коллекцию с этими документами документов такой же структуры, но отличаюшися в поле "score", чтоб в score в array добавлялось значение из нового документа, а если такой записи нет, то создавался новый элементы в поле quizzes в массиве.
Например, вставляется новый документ
{
"_id" : 5,
"quizzes" : [
{ "wk": "1", "zk": "somevalue1", "score" : [1111] },
{ "wk": "2", "zk": "somevalue2", "score" : [2222] },
{ "wk": "3", "zk": "somevalue3", "score" : [3333] },
{ "wk": "4", "zk": "somevalue1", "score" : [4444] },
{ "wk": "5", "zk": "somevalue5", "score" : [5555] },
{ "wk": "4", "zk": "somevalue400", "score" : [444] },
{ "wk": "5", "zk": "somevalue6", "score" : [6666] }
]
}
В нем разделил элементы которые совсем изменились, и должны быть вставлены в quizzes как новые элементы, а в существующие записи в quizzes добавлялись в score:
В итоге, документ в коллекции должен быть такой:
{
"_id" : 5,
"quizzes" : [
{ "wk": "1", "zk": "somevalue1", "score" : [111, 1111] },
{ "wk": "2", "zk": "somevalue2", "score" : [222,2222] },
{ "wk": "3", "zk": "somevalue3", "score" : [333, 3333] },
{ "wk": "4", "zk": "somevalue1", "score" : [444, 4444] },
{ "wk": "5", "zk": "somevalue5", "score" : [555, 5555] },
{ "wk": "4", "zk": "somevalue400", "score" : [444] },
{ "wk": "5", "zk": "somevalue6", "score" : [6666] }
]
}
Elisey
Всем привет! У меня вопрос: а нужна ли вообще ODM Монге?? У нее достаточно крутой нативный драйвер, просто можно хелперы какие-то прописать под конкретный проект и все или небольшой слой. Мне кажется это не совсем то же что ORM в сиквелах...
Михаил
Joe
>Мне кажется это не совсем то же что ORM в сиквелах...
ты про одм или монго драйвер?)
Если про драйвер - да, это не то
Если про одм - то это тоже не то, т.к. он по большому счету при работе с драйвером (а он поверх него строится) биндит свои методы к драйверу, ну и допом накручивает свои фичи как уже сказали выше.
А почему ОДМ - не ОРМ, потому что ОРМ твой запрос из методов переводит в raw sql (генерит его, а иногда даже несколько запросов), а в одм (в случае монго), ты сам просто передаешь тело запроса в виде объекта с фильтрами, а одм уже биндит его
Естественно у ОДМ есть еще доп фичи (например autopopulate какой-нить), но глобально уже «примерно» расписал
Michail
Подскажите, можно ли в mongoose в agregate возращать не массив а обьект, с моими собственными полями. например
{results:[], pageCount : 90, limit : 30}
Joe
Michail
Michail
Ну грубо говоря предыдущи пайплайн передаем массив всех товаров, а следущий паплайн имеет вытягивает limit и page , и на основе этой фигни фильтрует мои данные
Michail
тут скорее вопрос в том, могу ли я из pipiline получить любую структуру данных а не только массив
Michail
Подскажите, как сделать в монго при создание схемы, чтоб значение propery было равно только значению из массива
Joe
Michail
Michail
enum?
И не знаете, можно ли в зависемости от property в схеме, добавлять с схему еще propety или удалять.
Например: если type : "sale" то добавить в схему property price
Joe
Igor
помогите написать я не умею читать доки в гугле забанили
Igor
есть база projects с документами, в них есть поле field1, в поле сидит массив объектов obj1 с полем field2, в котором массив объектов obj2, в котором есть или нет поля field3, и надо выбрать тех obj2, у кого нет этого поля вовсе и поставить им его в false
Igor
я пишу монговый запрос руками второй раз в жизни, запутался уже раза три
Igor
пока мой лучший вариант выглядит как {projects.field1.field2.field3"=null}
Igor
он выдает мне все документы у кого есть такое.
Igor
в принципе можно жить
Igor
но я бы хотел получить конкретно ob2 у которых есть свой _id и я бы их обновил не вытаскивая документ целиком, а то есть жирные
Eva🇺🇦
Схема и модель могут быть объявлены до подключения к дб?
Igor
находит но не апдейтит. где я что не так делаю? подскажите плс
Igor
Igor
// stradanie
Vlad
Всем привет, возникла проблема, нужно найти колонку по id но возвращает underfined((( В чем может быть проблема?
Vlad
сначала нахожу борду(все ок) дальше в борде нужно найти колонку по id( underfined)
Igor
там ObjectID небось
Igor
а в boardId строка наверняка
Igor
projectId: ObjectId(boardId)
Igor
попробуй
Igor
или projectId: new ObjectId(boardId)
Igor
как-то так
Vlad
как-то так
в selectedBoard все работает а во втором selectedColumn не работает
Vlad
но я пытаюсь найти с помощью метода find в js, может из-за этого
Igor
у тебя во втором случае нету await
Igor
как минимум
Vlad
а в метода findOne или find как то можно сразу в одном вызове найти борду и в этой борде найти колонку?
Igor
можно
Igor
ты пробовал mongoose?
Vlad
нет
Igor
очень упрощает это все
Vlad
ok посмотрю, спастбо
Igor
взять документ из бд по айдишнику, в нем пошуршать, потому save() и усё
Igor
только надо модель описать, мол это борд, у него такие-то поля
Igor
примеры посмотри там просто
Vlad
так я это и пытаюсь сделать, борда у меня на бд, модель сделал, сейчас пытаюсь найти по ид
Igor
если это mongoose то вот пример как у меня работает const project = await Project.findOne({_id: req.params.projectID}).exec()
Igor
по строке
Vlad
exec() а это что?
Igor
а я понял
Vlad
))))
Igor
а я понял
у тебя там сравнение не пашет потому что вот так оно и задумано что не будет работать
Igor
тебе надо делать вот такую штуку
Igor
https://stackoverflow.com/questions/11637353/comparing-mongoose-id-and-strings
Igor
_id.equals(сюда писат другой _id)
Igor
и это не строки! это ObjectId экземпляры
Igor
или можно перегонять их в строки .toString() но это тупо
Igor
Igor
это плохой пример
Igor
короче можно сравнить два ObjectID через .equals
Igor
но нельзя через ==
Igor
через === можно сравнить две строки
Vlad
аааа
Igor
вот
Vlad
большое спасибо
Vlad
теперь понял
Igor
пожалуйста
Igor
𝚂𝚑𝚞𝚔𝚑𝚊
В чем проблема?
Схема монги:
role: {
type: Number,
default: 0,
enum: {
values: [0, 1, 2],
message: 'User.role.enum'
}
}
Ошибка:
0 is not a valid enum value for path role.
Cloud
Попробуй enum: [0, 1, 2]
Rassulzhan
Привет ребят. Пишу приложение для учета финансов на стеке MEVN. И хотел бы задать вопрос.
У меня есть схема "транзакция" и схема "кошелек". Когда создается транзакция на опреденного пользователя я обновляю баланс кошелка.
Вопрос: этот подход нормальный?