Андрій
CybernatiC
Как сделать Distinct в Agregate?
Nick
CybernatiC
У кого был опыт создания 1 к 1 мессенджера?
CybernatiC
как получить список переписок?
CybernatiC
я пытаюсь вытащить из таблицы СООБЩЕНИЯ все сообщения которые были отправлены юзерайди или ПОЛУЧЕНЫ юзерайди
CybernatiC
теперь необходимо уникализировать записи чтобы вытащить не все переписки а только дистинктивные по одному сообщению к переписке между юзером 1 и 2 и например 2 и 3
Nick
CybernatiC
group by
Nick
тогда как выше - храните список отдельно от самих сообщений
CybernatiC
как лучше их хранить? какие поля там должны быть?
CybernatiC
подскажите структуру таблицы
Nick
CybernatiC
Внутри юзера
Когда юзер А начинает переписку с юзером Б у обоих юзеров обновить коллекцию conversations: [] и сделать туда ПУШ ID?
Nick
Да
CybernatiC
Первому добавить второй второму первый
CybernatiC
при пуше дублей не будет да уже?
Nick
при пуше дублей не будет да уже?
Смотря как сделаете, вы же сначала создавать беседу будете, а потом уже сообщения слать. Тут вы сможете перед начало разгоаора чекнуть создан он уже или нет. Плюс это можно использовать для отображения списка диалогов и просто их продолжать
CybernatiC
Я думаю в action add message на сокете делать апдейт юзеров и обновить их коллекцию
Nick
CybernatiC
Юзер А нажал написать Юзеру Б. Набрал сообщение и нажал ОТПРАВИТЬ. В этот момент я у обоих юзеров сделал бы апдейт их поля conversations где у друг друга указал бы айди
CybernatiC
Nick
Для UX можно сделать создание диалога у юзера б только когда в разговоре появляется первое сообщение, чтобы у юзеров не было кучи пустых разговоров
CybernatiC
Mike
А чем такая архитектура лучше если бы сообщения отдельно хранились в коллекции сообщений?
Nick
Для этого пишите юзерские сценарии, как юзер будет видеть события и как оно должен взаимодействовать с приложением. После этого уже приступаете к реализации
Nick
Nick
Tommy
как в $lookup сделать ограничение/лимит нанпрмиер чтобы обединить 2 документа?
CybernatiC
CybernatiC
Агригат
Tommy
есть пример?
Tommy
let recipes = await Recipe
.aggregate([
{
"$addFields": {
"_id": {
"$toString": "$_id"
}
}
},
{$lookup: {
from: "likes",
localField: "_id",
foreignField: "recipeId",
as: "likes"
}
}
])
Tommy
например мне нужно чтобы в массиве likes было 5 документов
Tsikhan
добрый вечер! база монги занимает 3тб, удалил в одной коллекции данных на 1тб, но на слейве это изменение не прошло... в чем может быть проблема?
Anonymous
rs.status() ?
Dmitry
.
Dmitry
сделал
Max
Добрый день! Насколько сильно влияет project на скорость выполнения запроса? Есть жирные документы в коллекциях, думаю обрезать лишние... пока разницу не особо замечаю
Nick
Max
Alex
Можете менее используемые части вынести в дргугую коллекцию и цеплять ее по FK
Max
Alex
Nick
Nick
Max
Alex
Если проект большой и данных много, то использовать и предагрегаты и внешние кеши
Max
вообще какая-проблема - есть жирная коллекция в документах которых кроме прочих даных лежит массив координат..
всё было норм, пока не начали собирать статистику
Max
проблема реальная - на атласе уже ворнинги на I/O - выше 70-80%
Max
подняли пока план до 32 Гб оперативы)
Alex
Max
но это накапало за несколько месяуев
Max
Max
даже не так - одну оставить как есть, а во вторую - дублировать только нужные данные
Alex
Да не, просто я знаю, что бывают проблемы, когда из монги пытаются делать реляционную базу и все начинает очень медленно работать
Max
Max
сужаем их до нужного количества?
Max
@yatoba @al_web а где про это можно почитать? этому процессу есть общее название?
Max
статти / книжки?
Nick
По типу, это просто подходы к оптимизации
Max
я понимаю, просто может есть общие практики?
Max
Alex
Max
хотя ладно, слишком много вопросов)
Max
спасибо!
Alex
.explain()
Nick
Хм, у меня както больше все на опыте. Но база это понимание нлрмальных форм при работе sql https://ru.m.wikipedia.org/wiki/Нормальная_форма
Max
Nick
Она применима к данным вообще никак не ограничиваясь компьютерами, вплоть до записей в вашем блокнотике
Назар
Всем привет. Можно ли вставить документ в другой документ? Просто как вложенный обьект, но чтоб монго сгенерило _id?