User {
_id: "my_user",
name: "john smith",
email: "blah@test.com,
friends: [
*More Users*
]
}
フレンドのユーザーデータを書き換えますか? 「友達を追加」するたびに、データを再度入力するか、別の User _id フィールドに「関連付ける」か?
ドキュメントの構造は、データアクセスパターン、つまりプログラムがデータにアクセスする方法に基づいている必要があります。上記の例では、多くの友人に対して1つの「ジョンスミス」しかないため、1対多の関係を扱っています。「JohnSmith」の友達はお互いの友達である可能性があり、これまでのように配列内に配置されたFriends'_id'を使用して対処できます。これにより、データを変更する際の異常のリスクが軽減されます。
User1 {
_id: "my_user1",
name: "john smith",
email: "blah@test.com,
friends: [
"my_user2",
"my_user3",
"my_user4",
]
}
User2 {
_id: "my_user1",
name: "john smith",
email: "blah@test.com,
friends: [
"my_user1",
"my_user3",
"my_user4",
]
}
別のオプションはデータを埋め込むことですが、これは重複や変更の異常につながる可能性があるため、パフォーマンス上の理由で行う必要がない限り、避ける必要があります。