0

各ドキュメントが仮想オークションを表すコレクションがあります。特定の期間で最も一般的なアイテムIDを見つけたい。SQLでは、通常の並べ替えと制限をSELECT item, COUNT(*) as count使用します。GROUP BY itemこれに相当するmongodbはありますか?

4

2 に答える 2

2

MongoDBにはここにいくつかのオプションがあります。

これらの各オプションは、異なる構文と異なる速度を持ちます。

これらのいずれの場合でも、これらのオプションは比較的遅いと思われます。Map / Reduceジョブは、「オフライン」で実行することを目的としており、通常は「cronジョブ」または「スケジュールされたタスク」として実行されます。これを頻繁に行う予定の場合は、このデータを事前に集計することをお勧めします。

于 2012-07-06T23:14:25.257 に答える
0

または、MapReduceを使用してから出力コレクションを並べ替えることも、コマンドグループを使用することもできますが、並べ替えと制限のほとんどはクライアント側で行う必要があります。

グループコマンドの例:

db.coll.group(
       {key: { a:true, b:true },
        cond: { active:1 },
        reduce: function(obj,prev) { prev.csum += obj.c; },
        initial: { csum: 0 }
        });

また、mongodb(2.2)の次の安定バージョンでは、この操作をはるかに簡単にする新しい集約フレームワークがリリースされることにも言及する価値があります。

于 2012-07-06T23:19:05.440 に答える