2

だから私は、さまざまなテキスト ファイルを保存しているペット プロジェクトに取り組んでいます。コレクションの 1 つにタグを文字列として保存するようにアプリをセットアップしたので、例は次のようになります。

タグ: 「Linux Apache WSGI」

それらを保存して検索することは問題なく機能しますが、タグクラウドのようなことをしたり、さまざまなタグをすべて数えたり、タグに基づいて動的な選択システムを作成したりしたいときに質問があります。それらを分割する最良の方法は何ですか?と連携?それとも、別の方法で保管する必要がありますか?

論理的には、すべてのレコードをスキャンしてすべてのタグを取得し、スペースに基づいてそれらを分割し、何らかの方法で結果をキャッシュすることができます。それが正しい答えかもしれませんが、コミュニティの知恵を聞きたかったのです。

データベースと対話するためにpymongoを使用しています。

4

1 に答える 1

6

それとも、別の方法で保管する必要がありますか?

タグを格納する標準的な方法は、タグを配列として格納することです。あなたの場合、DBは次のようになります。

tags: ['linux', 'apached', 'wsgi']

...作業するためにそれらを分割する最良の方法は何ですか?

これがMap/Reduceの設計目的です。これは事実上「すべてのレコードをスキャン」します。Map/Reduce の出力は、クエリ可能な別のコレクションです。

ただし、これを行う別の方法もあり、それは「カウンター」を保持して更新することです。したがって、新しいドキュメントを保存すると、そのドキュメントに関連するすべてのタグもインクリメントされます。

于 2011-07-25T00:39:54.190 に答える