Najlepszy sposób na przechowywanie / pobieranie wartości z listy w Mongo / RectiveMongo?

Mam dość powszechny przypadek użycia - listę komentarzy. Każdy komentarz ma autora.

Przechowuję odniesienie z komentarza do autora za pomocą odniesienia, ponieważ autor może robić wiele komentarzy.

Teraz pracuję z ReactiveMongo i chcę spróbować asynchronicznego dostępu do bazy danych, ale w tym przypadku nie wiem jak. Wykonuję asynchroniczny dostęp do bazy danych, aby uzyskać komentarze, ale dla każdego komentarza muszę uzyskać autora i do tej pory jedyny sposób, jaki znam, to zapętlić komentarze i uzyskać synchronicznie użytkownika:

val userOption:Option[JsObject] = Await.result(usersCollection.find(Json.obj("id" -> userId).one[JsObject], timeout)
//...

Poza tym mogłem:

Uzyskaj każdego użytkownika asynchronicznie, ale potem muszę wprowadzić pewne funkcje, aby poczekać, aż wszyscy użytkownicy zostaną pobrani, w celu zwrócenia odpowiedzi, a mój kod prawdopodobnie stanie się bałaganem.

Przechowuj cały obiekt użytkownika - przynajmniej to, czego potrzebuję do komentarza (obraz, nazwa i inne) w każdym komentarzu. Ta redundancja może stać się kłopotliwa w zarządzaniu, ponieważ za każdym razem, gdy użytkownik coś zmienia (istotne dla danych przechowywanych w komentarzach), musiałbym przeglądać wszystkie komentarze w bazie danych i modyfikować je.

Jaki jest właściwy wzór do zastosowania tutaj?

questionAnswers(1)

yourAnswerToTheQuestion