sql >> データベース >  >> NoSQL >> MongoDB

MongoDBでのaggregate($ match)とfindの違いは?

    集計出力が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がリリースされ、集計の変更が予測されました。



    1. MongoDB / PyMongo:複数の基準のクエリ-予期しない結果

    2. MongoDBは浮動小数点型をサポートしていますか?

    3. Hadoop MapReduceのInputSplitとは何ですか?

    4. Node.jsファイルのアップロード(Express 4、MongoDB、GridFS、GridFS-Stream)