集計出力がDBCursorまたはリストとして返されないのはなぜですか?
集約フレームワークは、そうでなければmap-reduceを必要とする簡単な問題を解決するために作成されました。
このフレームワークは、入力として完全なデータベースを必要とし、出力として少数のドキュメントを必要とするデータを計算するために一般的に使用されます。
集計関数内で使用される$match演算子と、Mongodbでの通常の検索の違いは何ですか?
あなたが述べたように、違いの1つはリターンタイプです。 DBCursorとして返される操作の出力を検索します 。
その他の違い:
- 集計結果は16MB未満である必要があります。シャードを使用している場合は、最初の $ groupの後に完全なデータを1つのポイントで収集する必要があります。 または$sort 。
- $ match 唯一の目的はアグリゲーションの能力を向上させることですが、アグリゲーションのパフォーマンスを向上させるなど、他の用途もあります。
また、返されたドキュメントの数を取得できないのはなぜですか?
あなたはできる。結果の配列の要素数を数えるか、パイプの最後に次のコマンドを追加するだけです。
{$group: {_id: null, count: {$sum: 1}}}
検索関数で集計関数のようにフィールド名の名前を変更できないのはなぜですか?
MongoDBは若く、機能はまだ提供されていません。たぶん、将来のバージョンでそれができるようになるでしょう。 集計では、フィールドの名前を変更することがより重要です。 findよりも 。
編集(2014/02/26):
MongoDB2.6の集計操作はカーソルを返します。
編集(2014/04/09):
MongoDB 2.6がリリースされ、集計の変更が予測されました。