サブセットは興味深い、薄い MongoDB ラッパーのように見えます。
与えられた例の 1 つに、ツイートとユーザーがあります。ただし、User
のサブドキュメントですTweet
。従来の SQL では、これは Tweet から User への外部キーを持つ 2 つの別個のテーブルに正規化されます。MongoDB では、これは を必要とせずDBRef
、ユーザーの保存ObjectId
で十分です。
Subset と Salat の両方で、これにより次のケース クラスが生成されます。
case class Tweet(_id: ObjectId, content: String, userId: ObjectId)
case class User(_id: ObjectId, name: String)
そのため、Tweet の ObjectId が実際に User に解決されるという保証はありません (型安全性が低くなります)。また、User を参照するクラスごとに同じクエリを作成する必要があります (または、それを何らかのトレイトに移動します)。
だから私が達成したいのはcase class Tweet(_id: ObjectId, content: String, userId: User)
、 、コード内、およびObjectId
データベース内にあることです。これは可能ですか?良い代替手段は何ですか?