4

私はMongodbを初めて使用します.2つまたは複数のコレクション間で1対1、1対多、多対多の関係を管理したいのですが、ドキュメントは管理したくありません。Javaコードでそれを処理する方法は? 現時点では例がありません。一般的な情報を取得したいだけです。どうも!!

4

2 に答える 2

3

MongoDB はスキーマレスであるため、コレクション レベルのドキュメント間にスキーマや関係はありません。

DBRefただし、 sを使用して、あるコレクションの一部 (またはすべての場合) のドキュメントを別のコレクションのドキュメントにリンクできます。

> db.users.insert({_id : a, name : "Drake", age : 15})
> db.pets.insert({name : "Booch", userId : {"$ref" : "users", "$id" : a}})
> db.users.find()
{ "_id" : ObjectId("520aaf5cfbb9bb87c072aa43"), "name" : "Drake", "age" : 15 }
> db.pets.find()
{ "_id" : ObjectId("520aafecfbb9bb87c072aa44"), "name" : "Booch", "userId" : DBRef("users", ObjectId("520aaf5cfbb9bb87c072aa43")) }

ここで、userIdフィールド inpetsは挿入後に DBRef になります。

RDBMS の外部キーとは異なり、アプリケーションがエンティティをリンクするのに役立つメタデータに似ています。そして、それらをプログラムでリンクするのは開発者としてのあなたの仕事ですが、DB クエリではありません。

于 2013-08-13T22:16:53.717 に答える
0

ここでの主な決定は、埋め込むか参照を使用するかです。

データの正規化を解除し、関連する 2 つのデータを 1 つのドキュメントに格納する埋め込みをお勧めします。このように、ドキュメント内の操作は、複数のドキュメントが関係する操作よりもサーバーのコストが低くなります。

これこのリンクをチェックしてください。

于 2013-08-13T22:32:06.443 に答える