これはプログラミングの問題ではないことを理解しています。非常に明確で説明的な解決策を見つけることができません。
3 に答える
Mongoid のドキュメントは非常に明確です。
埋め込みリレーションは、データベース内の他のドキュメント内に保存されているドキュメントを記述します。
参照関係は、他のドキュメントに関する外部キー データ (通常は ID) をそれ自体に格納することによって、別のコレクション内のドキュメントを参照するドキュメントを記述します。
詳細に:
参照 1-n /has_many
この性質の関係を定義すると、各ドキュメントはそれぞれのコレクションに格納されますが、子ドキュメントには親への「外部キー」参照が含まれます。
# The parent band document.
{ "_id" : ObjectId("4d3ed089fb60ab534684b7e9") }
# The child member document.
{
"_id" : ObjectId("4d3ed089fb60ab534684b7f1"),
"band_id" : ObjectId("4d3ed089fb60ab534684b7e9")
}
参照 nn /has_and_belongs_to_many
この性質の関係を定義する場合、各ドキュメントはそれぞれのコレクションに格納され、各ドキュメントには配列の形式で他のドキュメントへの「外部キー」参照が含まれます。
# The band document.
{
"_id" : ObjectId("4d3ed089fb60ab534684b7e9"),
"tag_ids" : [ ObjectId("4d3ed089fb60ab534684b7f2") ]
}
# The tag document.
{
"_id" : ObjectId("4d3ed089fb60ab534684b7f2"),
"band_ids" : [ ObjectId("4d3ed089fb60ab534684b7e9") ]
}
組み込み 1-n /embeds_many
マクロを使用して埋め込まれたドキュメントはembeds_many
、親のデータベース コレクション内の親内にハッシュの配列として格納されます。
{
"_id" : ObjectId("4d3ed089fb60ab534684b7e9"),
"albums" : [
{
"_id" : ObjectId("4d3ed089fb60ab534684b7e0"),
"name" : "Violator",
}
]
}
属する:
belongs_to アソシエーションは、別のモデルとの 1 対 1 の接続を設定し、宣言モデルの各インスタンスが他のモデルの 1 つのインスタンスに「属する」ようにします。多くを持っています
多くを持っています:
has_many 関連付けは、別のモデルとの 1 対多の接続を示します。この関連付けは、begins_to 関連付けの「反対側」にあることがよくあります。この関連付けは、モデルの各インスタンスが別のモデルのインスタンスを 0 個以上持つことを示します。
embeds_many:
mongoid
has_manyとmongodb
同じように使用されます
Embeds_many は、埋め込みオブジェクトとして何度もコレクションにリンクします (1:N) Has_many は同じことを行いますが、埋め込みオブジェクトとしてではありません (1:N)
最後のものはほとんど (N:N) と同等です