0

私はMongoDBを初めて使用します。MongoDBのパフォーマンスをテストするための単純なプロジェクトを作成したいだけです。このプロジェクトは、ユーザー、ブログ、コメントを含む単純なCMSと同じように、ユーザーは友達を持つことができます。

だから私はそのようにデータベースを設計します

user
{
     _ID:
    name:
    birth_day:
    sex:

    friends:[id_1,Id_2]
}
blogs
{
    title:
    owner: 
    tags_fiends:
    comments:
    [
        {"_id":"","content":"","date_created":""},
        {"_id":"","content":"","date_created":""},
    ],
    "like"={"_id","_id"}
}

そして、このデータベースに必要なコレクションの数。ユーザーとブログの両方に1つのコレクションを使用できますか。よろしくお願いします。

4

2 に答える 2

1

mongoDB はスキーマレスまたはスキーマフリー DB であるため、サポートされているドキュメント内であらゆる種類の構造を作成できます。

  • 個々の要素
  • ネストされた配列
  • ネストされたドキュメント

スキーマの設計時に考慮しなければならないことがいくつかあります。ユーザーとブログを別々のスキーマに置くと便利です。たとえば、入れ子になった配列に何かを格納する場合、この配列内で検索を固定するためにインデックスを指定できますが、1 つの特定のコレクション内で複数キー インデックス (インデックス付き配列コンテンツ) を 1 つしか持つことができません。したがって、友達とブログ、投稿、タグをすべて配列に保存すると、そのうちの 1 つだけにインデックスを付けることができます。

この場合、各ドキュメントのサイズ制限が現在 16 MB であることを知っておくことも重要です。

于 2013-01-28T12:05:54.660 に答える
0

あなたのシナリオでは、Users をコレクションにして、ブログ コレクションから _id で参照します。

実際には、ブログをユーザーの属性にすることができます。唯一の制約はドキュメントの最大サイズが 16MB ですが、これは大量のブログ (テキスト) です。

これを回避するには (必要があると仮定して)、user _id を参照する別の Blog コレクションで問題ありません。それがあなたの _id でない場合は、ユーザー名も非正規化する必要があるかもしれません。これは、1 つのクエリでユーザーのすべてのブログを取得できることを意味します。

于 2013-01-28T12:02:09.133 に答える