Denis
Нет , скорее особенности работы системы с внешними ресурсами
Да. Значит надо по отдельным коллекциям разбить
Joseph
Да. Значит надо по отдельным коллекциям разбить
При таком варианте может получиться большое количество populate`ов
Joseph
Если захочешь все это достать
Anonymous
Здравствуйте, есть такой респонс { messages: [ {user: "id"} ], users: [ {...user} ] } Как с помощью populate в messages => [n] => user вместо id выдавать объект пользователя?
Denis
Здравствуйте, есть такой респонс { messages: [ {user: "id"} ], users: [ {...user} ] } Как с помощью populate в messages => [n] => user вместо id выдавать объект пользователя?
Если я правильно понял вопрос) const user = await User.create({ name: "tester" }); const test = await WithMessage.create({ messages: [{ user: user._id }] }); const fromModel = await WithMessage .findOne({ _id: test._id }) // с .find({ ... }) будет работать аналогично .populate({ path: 'messages.user' }) .exec(); const fromDoc = await test.populate({ path: 'messages.user' }).execPopulate(); в логах будет: Mongoose: users.insertOne({ _id: ObjectId("5f58cae70a208e5d78eb27e2"), name: 'tester', __v: 0 }, { session: null }) Mongoose: withmessages.insertOne({ _id: ObjectId("5f58cae70a208e5d78eb27e3"), messages: [ { _id: ObjectId("5f58cae70a208e5d78eb27e4"), user: ObjectId("5f58cae70a208e5d78eb27e2") } ], __v: 0}, { session: null }) Mongoose: withmessages.findOne({ _id: ObjectId("5f58cae70a208e5d78eb27e3") }, { projection: {} }) Mongoose: users.find({ _id: { '$in': [ ObjectId("5f58cae70a208e5d78eb27e2") ] } }, { ... }) Mongoose: users.find({ _id: { '$in': [ ObjectId("5f58cae70a208e5d78eb27e2") ] } }, { ... })
Веселый Роджер
Я в компасе пытаюсь выборку отфильтровать. {"lessons":{"l0":{"status":"Yes"}}} Но выдает пустоту. Хотя такая точно есть. Как правильно запрос выстроить ?
Alex
Всем привет. У меня есть вот такой документ с объектами и вот такая форма, какой метод мне может помочь обновить поле value для каждой записи?
Alex
Alex
Alex
Или нужно каждый объект отдельно обновлять?
Denis
Или нужно каждый объект отдельно обновлять?
если хочется одним запросом все обновить, то могу предложить. https://docs.mongodb.com/manual/core/bulk-write-operations/ Это подойдет для обновления нескольких конкретных документов разными значениями в один запрос к mongo
StaniFe
Всем добрый вечер! Кто может подсказать, как поменять временную зону в дате, без изменения самой даты?
Vladimir
Доброе время суток. Подскажите пожалуйста - аггрегированый запрос в котором составляется массив через фильтр отдаёт документ без части полей
Vladimir
Похоже вопрос к mongoose...
Alex
Доброе утро! Не могли бы прояснить немножко для нуба, как работет update_many при upsert = True и правильную функцию ли я использую? Собственно нужно обновить либо заинсертить документ, если такого еще не было в коллекции. По аналогии с ON CONFLICT в посгре или MERGE в оракле. Как мне указать ключ документа в update_many по которому и будет происходить обновление?
Nick
Доброе утро! Не могли бы прояснить немножко для нуба, как работет update_many при upsert = True и правильную функцию ли я использую? Собственно нужно обновить либо заинсертить документ, если такого еще не было в коллекции. По аналогии с ON CONFLICT в посгре или MERGE в оракле. Как мне указать ключ документа в update_many по которому и будет происходить обновление?
update many это обычный апдейт с установленным флагом many=true, который говорит монге пройтись по всем подходящим под запрос докам и произвести операцию. С флагом false или его аналогом update_one - монга применит изменение только к первому найденному доку. про upsert все верно - это аналог инсерта с update/merge on conflict
Nick
а ключ указывать как обычно в параметре фильтра update({_id:xxxxx}, {$set:{asdasd:sadad}})
Alex
а ключ указывать как обычно в параметре фильтра update({_id:xxxxx}, {$set:{asdasd:sadad}})
Ну то есть, если у меня есть n документов с разными ключами и хочу их разом вставить в монгу, то по сути я из каждого должен выдернуть ключи и пройтись циклом, раз нужно указывать конкретный ключ? Ну либо сделать remove этих документов, а потом insert?
Nick
на каждый док отдельный запрос
Alex
понял, спасибо)
Nick
простой update_one
Timka
Ребят, в mongoose есть поле у коллекции, оно типа Object. Хочется чтобы быстро происходил поиск по значению какого-то ключа для этого Object. Поможет ли просто создать индекс для этого поля? application: { type: Object, index: true, default: null, },
Roman
Ребят, а что быстрее? Обновление одного поля записи или удаление всей записи? 🧐
Viktar
Странный вопрос. Наверное вы имеете ввиду дроп инсерт?
Roman
нет, именно обновить поле/удалить запись
Roman
кейс такой попался
Roman
стало интересно
Nick
Ребят, а что быстрее? Обновление одного поля записи или удаление всей записи? 🧐
Если над этим полем есть индекс то одинакового, если нет, то первый вариант чуточку быстрее
Ростислав ✚
У меня есть несколько тысяч документов в колекции, есть пост запрос который получает 59шт, и у него может быть урл параметр page который осуществляет пагинацию посредством пропуска количества записей по формуле page*59. Вот как это выглядит
Ростислав ✚
Проблема в том что попадаются одинаковые документы на 0, 1 и 2 странице, а также на 5
Ростислав ✚
https://api.vsivuha.online/?page=2
Nick
Добавьте сортировку перед лимитом
Ростислав ✚
Ростислав ✚
Добавьте сортировку перед лимитом
Сделал, не помогло, переместил сортировку в самое начало, тоже самое, как это отловить?
Ростислав ✚
Странно что именно повторяется один и тот же документ на нулевой (без пропуска) первой, второй и пятой странице
Ростислав ✚
А ты уверен что в бд он не дублируется?
_id ведь уникальные, хотя сейчас перепроверю
Рубикон
Рубикон
Число или флаг?
Ростислав ✚
Рубикон
ready
Ростислав ✚
ready
Это число от 0 до 3 по степени заполнености документа данными, что бы более полные были выше в выдаче
Ростислав ✚
А ты уверен что в бд он не дублируется?
Кстати а _id нужно в схеме прописывать уникальность в опциях, или оно такое по дефолту? Потому что я думал что да, но теперь не уверен
Рубикон
Так что .. шурши доку
Рубикон
Так то-то оно вроде как есть.. при генерации
Null
4.4.1 (Sep 9) ◦ 4.2.9 (Aug 21) ◦ 4.0.20 (Aug 21) • Плейграунд для запросов • Документация • Официальные курсы (Бесплатно) Stable: 4.4.1 (Sep 9) ◦ Bugfix: 4.2.9 (Aug 21), 4.0.20 (Aug 21) Legacy: 3.6.19 (Jul 23) По вопросам платной поддержки и покупки лицензий пишите @dd_bb ☠️: 3.4.23 (Jan ‘20), 3.2.21 (Dec ’18), 3.0.15 (May ’17)
Рубикон
Всегда уникальное
Там хитрее, но да, можно и так утверждать
Nick
С верси 3.6 поле _id обязательно и всегда с уникальным индексом
Ростислав ✚
Там хитрее, но да, можно и так утверждать
Получается у меня все же не дубли а что-то другое, есть еще какие варианты?) Или советы как понять в чем проблема? Потому что я уже все перепробовал что в голову приходило
Рубикон
И да.. почему при пагинации ты не юзаешь курсор?
Рубикон
У тебя запрос каждого другого набора .. опять выполняется от начала
Рубикон
https://docs.mongodb.com/manual/reference/method/js-cursor/
Nick
и сортировка по признаку реди будет не стабильна, нужно еще добавить какоето поле
Nick
например id или дату или еще чтото уникальное
Ростислав ✚
например id или дату или еще чтото уникальное
Да, проблема точно в сортировке, сейчас попробую
Ростислав ✚
например id или дату или еще чтото уникальное
дата почему то не сработала, а c id все ок. Спасибо всем помогавшим, целые сутки искал причину
Рубикон
дата почему то не сработала, а c id все ок. Спасибо всем помогавшим, целые сутки искал причину
а стоили только внимательней почитать про агрегацию и сортировку, да?
Ростислав ✚
а стоили только внимательней почитать про агрегацию и сортировку, да?
Я сначала на фронт думал так как мигрировал проект с реакта на next, и сначала проблема была в том что он ругался на неуникальные ключи, это уже позже заметил что проблема глубже, но вообще да если бы с самого начала знал как нужно и нормально сделал бек то этой проблемы бы не было
Ростислав ✚
дата неуникальная и не является индексом, да?
В теории уникальная, в милисекундах, но не индекс
Ростислав ✚
это не гарантировано
Да, хотя в теории не должно было добавлятся два товара в одну милисекунду, хз почему не сработало, но по id намного надежней конечно
Рубикон
https://ru.wikipedia.org/wiki/%D0%97%D0%B0%D0%BA%D0%BE%D0%BD_%D0%9C%D0%B5%D1%80%D1%84%D0%B8
Ростислав ✚
как раз "Законы Мерфи" утверждают обратное
Ну да, на то он и есть что бы предостерегать
Вовчик
Можно ли как-то в Компассе посмотреть размер документа?
Murena
Всем привет - подскажите процес монги съедает 20 гиг оперативы - как понять что конкретно там в оперативку выгружается ? индексы ?
Андрей
Anonymous
Всем привет нужна помощь как загрузить скрипт в MongoDB
Anonymous
Я зделал это залил скрипт бота в MongoDB