0

NodeJSとMongoDBを使ったオンラインサッカー管理ゲームの開発を始めています。しかし、今はわかりません。複数のコレクションを使用する必要がありますか、それともすべてを1つにまとめることができますか?例:

{
  "_id" : ObjectId("5118ee01032016dc02000001"),
  "country" : "Aruba",
  "date" : "February 11th 2013, 3:11:29 pm",
  "email" : "tadad@adadasdsd.com",
  "name" : "test",
  "pass" : "9WcFwIITRp0e82ca3c3b314a656bfb437553b1d013",
  "team" : {
    "name" : "teamname",
    "logo" : "urltologo",
    "color" : "color",
    "players" : [{
        "name" : "name",
        "surname" : "surname",
        "tackling" : 58,
        "finishing" : 84,
        "pace" : 51,
         ....
      }, {
        "name" : "name",
        "surname" : "surname",
        "start_age" : 19,
        "tackling" : 58,
        "finishing" : 84,
        "pace" : 51,
         ...
      }],
    "stadium" : {
        "name" : "stadium",
        "capacity" : 50000,
         "pic" : "http://urltopic",
        ....
     },
  },
}

または、ユーザー、フィクスチャー、プレーヤー、チーム用にさまざまなコレクションを作成しますか?または他の方法?

4

2 に答える 2

1

mongoでスキーマを設計する方法に厳格なルールはありません。多くは、アプリケーションのデータアクセスパターン、データアクセスの頻度、さまざまなエンティティ間の関係、それらがどのように縮小/拡大/変更され、どれがそのまま維持されるかに依存します。アプリケーションがどのように機能するかを知らずにアドバイスを与えることは現実的ではありません。たとえば、MongoDB in Actionなどの本を参照することをお勧めします。この本には、アプリケーション固有の要件を考慮して、mongoでスキーマを適切に設計する方法に関するアドバイスがあります。

于 2013-02-14T18:12:16.993 に答える
1

私がMongoDBを使い始めたとき、私は「すべてを埋め込む」というマントラに従っていました。これはまさにあなたが上で行っていることです。ただし、非常に大きくなる可能性のあるサブドキュメントについては、いくつかの考慮事項が必要です。特定のドキュメントまたはサブドキュメントを更新する頻度についても考慮する必要があります。たとえば、プレーヤーはおそらく定期的に更新されるので、使いやすくするために、プレーヤーを独自のコレクションに入れたいと思うでしょう。とにかく、MongoDBの柔軟性により、この問題に対する「正しい」答えは実際にはありませんが、データモデリングに関するドキュメントを参照するのに役立つ場合があります。

于 2013-02-14T18:12:33.383 に答える