次のモデルを取り上げます。
質問 (スタック質問のような!)
Question {
_id : ObjectId(123),
Question : "MongoDB: Count number of referenced items",
Tags : [ObjectId(1), ObjectId(2), ObjectId(3)]
}
タグの表
Tag{
_id : ObjectId(1),
tag : "MongoDB",
description : "stuff"
},
{
.... more tags
}
すべてのタグを一覧表示したいと思います。各タグの横に、そのタグが使用された回数が表示されます。タグをクリックすると、次のように編集できます。
MongoDB (1232)
C# (23232)
これを行う最も堅牢な方法は何ですか。以下について調べてみました。
集約フレームワーク。これにより、ObjectId が Question テーブルに出現した回数をカウントできますが、タグの名前を取得する簡単な方法はありません。別のデータベース呼び出しを行い、すべてのタグを取得してからそれらを一緒にマップする必要があると思います。
タグ テーブルに COUNT を設定し、質問を送信するたびに、タグが追加または削除されたかどうかを確認してから、このカウンターを増減します。これを行うには良い方法だと脳に受け入れてもらえないようです。
[編集 - コメントを参照]
- タグ名を質問に保存します。使用タグ名は Id です。これにより、#1がより適切に機能するようになります. ただし、タグ名は変更される可能性があるため、これには波及効果があると思います。
これらのうちどれをお勧めしますか (およびその理由)。私が見逃した戦略はありますか?
C# 用の mongo ドライバーを使用しています