何百万ものアイテムを持つドキュメントのコレクションの一意のタグを追跡する最良の方法は何ですか? タグ付けを行う通常の方法は、マルチキーのインデックス付けのようです。ただし、すべての一意のキーを頻繁に取得する必要があります。mongodb の新しい "distinct" コマンドにもアクセスできません。私のドライバーである erlmongo はまだそれを実装していないようです。
3 に答える
ドライバーが個別に実装していなくても、自分で実装できます。JavaScript では (申し訳ありませんが、Erlang はわかりませんが、かなり直接的に翻訳されるはずです)、次のように言うことができます。
result = db.$cmd.findOne({"distinct" : "collection_name", "key" : "tags"})
つまり、使用しているデータベースの "$cmd" コレクションに対して findOne を実行します。コレクション名と個別に実行するキーを渡します。
ドライバーがヘルパーを提供していないコマンドが必要な場合は、http://www.mongodb.org/display/DOCS/List+of+Database+Commandsでデータベース コマンドの完全なリストを確認できます。
これは古い質問であることは知っていますが、同じ問題があり、PHP で実際の解決策を見つけることができませんでした。
だから私はこれを思いついた:
http://snipplr.com/view/59334/list-of-keys-used-in-mongodb-collection/
ジョン、コレクションのスキーマを分析するためのオープン ソース ツールである Variety を使用すると便利な場合があります: https://github.com/jamescropcho/variety
おそらく、バックグラウンドで N 時間ごとに Variety を実行し、新しく作成された VarietyResults データベースにクエリを実行して、特定の文字列で始まる一意のキー (つまり、特定の親の子孫) のリストを取得できます。
ご不明な点や追加のアドバイスが必要な場合はお知らせください。
幸運を!