0

「週末のプロジェクト」として、また mongodb を学習する方法として、息子のリーグ用のリトル リーグ アプリを開発しています。MongoDB でスキーマをセットアップする最善の方法に苦労しています。私の最大の問題は、一部のデータをレプリケートする必要があるかどうかです。これが私のスキーマへの最初の刺し傷です

コレクション - プレイヤー

    { "firstname": "Test",
     "lastname" : "Player",
     "street":"123 Lamar",
      "city": "Austin",
      "state":"TX" ,
      "zip": "78701",
     "littleleagueid": "123",
     "league":"minors",
     "team":"Rangers",
     parents : 
    [ {
    "firstname": "Bob",
    "lastname": "Player",
    "relationship": "father",
    "street":"123 Lamar",
    "city": "Austin",
     "state":"TX",
    "zip": "78701"
    },
    {
    "firstname": "Sally",
    "lastname": "Player",
    "relationship": "stepmother", 
    "street":"123 Lamar",
    "city": "Austin",
    "state":"TX",
    "zip": "78701"
    },
    {
    "firstname": "Sue",
    "lastname": "Explayer",
    "relationship": "mother",
    "street":"456 Congress",
    "city": "Austin",
    "state":"TX",
    "zip": "78761"}
     ]

}

私の最大の質問は、親を子供のコレクションに埋め込むべきか、それとも独自のコレクションに分離する必要があるかということです。アドレスが複数回繰り返されています。これが最善の方法かもしれませんが、SQL 環境では、これを独自のテーブルに取り込んだだけです。

あらゆるアドバイスをいただければ幸いです。

4

1 に答える 1

0

高速なクエリが必要な場合: スキーマは多かれ少なかれ問題ないと思います。

迅速な更新が必要な場合: 代わりに、_id を使用して親を参照し、プレイヤー コレクションを人物コレクションに変換します。このように、親が変更された場合、この親を持つプレーヤーほど多くはなく、1 つのドキュメントのみを更新します。

高速なクエリが必要な場合でも、データが重複している可能性があり、データの不整合が発生する可能性があるため、これはあまり保守的ではないことに注意してください。

于 2013-06-10T21:33:50.293 に答える