2

私はmongodbの初心者です。dbref を使用して 2 つのコレクションを参照してクエリを実行し、特定のフィールドをクエリする必要があります。

コメント集

        { 
          uid:12345, 
          pid:444, 
          comment="blah" 
        },

        { 
          uid:12345,
          pid:888, 
          comment="asdf" 
        },

        { 
          uid:99999, 
          pid:444, 
          comment="qwer" 
        }

ユーザー コレクション

        { 
          uid:12345, 
          name:"john" 
        },

        { 
          uid:99999,
          name:"mia"  
        }

dbref を使用して 2 つのコレクション間に参照を追加することで、これらのコレクションを mongodb に挿入する方法を教えてください。uid のコメントは、ユーザーの uid を参照する必要があります。

4

1 に答える 1

2

データベース参照 (DBRef)は、他のコレクションに関連する ID を格納するための規則ですが、MongoDB サーバーでサポートされている機能 (つまり、「結合」) ではありません。MongoDB へのアクセスに使用している言語ドライバーによっては、DBRef の追跡と関連ドキュメントの取得がサポートされている場合がありますが、手動で行った場合と同様に、追加のクエリが必要になります。

したがって、別のコレクションでユーザーに関連するコメントを見つけるための疑似コードは次のようになります。

  1. find({..})関心のあるユーザー
  2. 見つかったユーザーごとに
  3. ...find({uid:...})そのユーザーのすべてのコメント

ユースケースによっては、リンクではなく情報の埋め込みを検討する必要がある場合があります。たとえば、commentsコレクションは、実際にはコレクション内に埋め込まれた方が適切な場合がありますposts(サイトの各postサイトには多数の埋め込みがありますcomments)。users埋め込まれたコメントには、表示名などの基本的なユーザー情報が含まれている可能性があるため、ページをレンダリングするためにコレクションでこれを検索する必要はありません。

詳細については、次を参照してください。

于 2012-08-31T06:08:51.667 に答える