現在DBはFirestoreを使って、iosでTinderライクなマッチングアプリを作ろうとしています。
マッチングアプリなので、一度表示した相手は、一定期間もしくは全他ユーザーを表示しきるまでは、再び表示されないようにしたいのですが、そのための効果的なDB設計がわかりません。

現状のDBとしては、
Usersコレクションがあり、その中に各ユーザーを示すドキュメントがあるという状態です。
そして、今は単純にそのコレクションから普通にユーザーを取ってきて表示しているので、一度表示した相手も再び表示されます。

今の所考えている方法としては、以下の二つです。

TimeStampコレクションを作って、ユーザーが他ユーザーをスワイプする度に、
TimeStamp/ユーザーUID/OtherUsers/他ユーザーUIDのfieldに["matched":Bool], ["lastShowed": その時の時刻]を書き込んでいく。
そして、相手を表示するときには、一度Usersコレクションからドキュメントを取得し、その各UIDでTimeStamp/ユーザーUID/OtherUsers/そのUIDのドキュメントで、matched==falseかつlastShowedと現在時刻が一定期間経過してるかを、判定して、それが大丈夫なら、表示する。大丈夫でないなら表示しない。


各ユーザーのドキュメントに新たにOtherUsersのコレクションをつくる。
新たなユーザーが登録する度に、全ユーザーのOtherUsersコレクションに、新たなユーザーUIDのドキュメントを作り、そのフィールドに["matched":Bool], ["lastShowed": その時の時刻]を書き込んでいく。
相手を表示する時は、Users/ユーザーUID/OtherUsersコレクションから、matched==falseかつlastShowedと現在時刻が一定期間経過してるの条件でクエリをかけて表示する。

いずれにしてもあまり効率的でないと思うので、もっと良い方法をご教授いただければと思います。

また、必ずしもFirestoreでなくてもよいので、他のDBでも一度表示した相手を一定期間表示しないことができる設計を教えていただけたらと思います。

よろしくお願いします。