2
User {
    _id: "my_user",
    name: "john smith",
    email: "blah@test.com,
    friends: [
      *More Users*
    ]
}

フレンドのユーザーデータを書き換えますか? 「友達を追加」するたびに、データを再度入力するか、別の User _id フィールドに「関連付ける」か?

4

1 に答える 1

0

ドキュメントの構造は、データアクセスパターン、つまりプログラムがデータにアクセスする方法に基づいている必要があります。上記の例では、多くの友人に対して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",
  ]
}

別のオプションはデータを埋め込むことですが、これは重複や変更の異常につながる可能性があるため、パフォーマンス上の理由で行う必要がない限り、避ける必要があります。

于 2013-02-10T09:08:03.413 に答える