27

MongoDB に埋め込まれたドキュメントをフィルタリングする方法を理解するのに苦労しており、リレーショナル アソシエーションを使用する必要があると考え始めていますが、ドキュメント ストアのコンテキストではそれは間違っているように感じます。

典型的なブログ/コメント システムに固執すると、 のコレクションがありblogs、それぞれblogに多数の がありcommentsます。コメントは、ブログ ドキュメント内の埋め込みドキュメントとして保存されます。

blogsコレクションをフィルター処理するのは非常に簡単ですがcomments、それぞれに埋め込まれたものをフィルター処理するblogには、それらをすべてメモリにロードし (すべてを Ruby 配列に取得)、各コメントをループして、特定の条件に一致するコメントを返す必要があります。 .

ドット表記を使用して埋め込みドキュメントをフィルタリングする私の試みは失敗し、すべてのサブドキュメントが戻ってきます。

MongoDB でこれらをフィルタリングするためのより良い方法はありますか、それともリレーショナル アソシエーションを辞任する必要がありますか? (すべての埋め込みドキュメントを引き戻し、手動でフィルタリングすることは、長期的にはあまりにも集中的になります)

4

1 に答える 1

22

現在、説明している方法で埋め込みドキュメントをフィルタリングする方法はありません。ドット表記を使用すると、埋め込まれたドキュメントで一致させることができますが、ドキュメント全体、親、およびすべてが引き続き返されます。返されるフィールドを選択することもできますが、それも実際には役に立ちません。

必要な機能を実装する「仮想コレクション」の場合があります。気軽に投票してください:

http://jira.mongodb.org/browse/SERVER-142

それまでの間、コメントは独自のコレクションとして扱う必要があります。一般に、特定のデータセットを単独で操作する必要がある場合は、それをコレクションにします。他のセットの一部として考えた方がよい場合は、埋め込む方がよいでしょう。

于 2010-01-26T14:50:46.987 に答える