Подскажите как можно удобно в монге реализовать такую штуку: если пачка объектов (на уровне бизнес-логики, не базы), которые имеют поля to
и from
. Поля - массивы id таких же объектов, при этом связанные: добавление нового ID в to
объекта A должно быть зеркально отражено в from
объекта Б. По частоте запросов поле to
нужно сильно чаще, поле from
видят не все.
В данный момент сделал так: каждый элемент в базе имеет только поле to
, а from
считается агрегацией через поля to
других записей. Плюсы - просто, консистентно. Минусы - хз как в один запрос к базе сделать update+get чтоб вернуть from
, и вот как раз в update его возвращать нужно на уровне API. Пока сделано так - update+get достаёт to
, дальше from
приходит сбоку перед отправкой фронтенду. Плюс в апдейте идут два запроса - update+get на объект плюс bulk update на связанные объекты (добавление+удаление). Можно конечно все сделать в один update, но он значение не возвращает, и имхо мутирующий метод для одного элемента должен возвращать изменённый объект.
Подскажите как сделать лучше? В целом update не так чтоб часто использовали, так что может быть over-engineering. Думал про aggregate+merge, но это выглядит диким костылем