В таком случае вам лучше не хранить вложенные объекты, а использовать ссылки и $lookup (populate в mongoose).
Также почитайте про virtuals, localField и foreignField.
Ну вы когда деплоить будете, у вас всё точно так же как вы описали будет работать: клиент -> сервер -> БД, по-другому никак. Но всё же зачем заморачиваться с разворачиванием монги, если есть бесплатный MongoDB Atlas?
Я уже давно не программировал на чистом Koa или Express, но по памяти, npm пакетов для express будет побольше, чем для Koa.
Вариант c Nest рассматривать не стоит, куда такая махина для маленькой апишки? Но сам по себе фреймворк очень крутой, тут не поспоришь, сижу на нём уже год и слезать не планирую.