集計重合はパイプライン化によって達成されます。出力の各ステップにおけるポリマーパイプは、入力として次のステップになり、入力文書の後に操作を行う際に、各ステップの出力ファイルを生成します。
高分子パイプ:
$project
入力文書の構造を変更します。フィールドを、名前の変更、追加または削除するために使用することができ、また、ネストされた計算や文書を作成するために使用することができます。対応するproject()
方法
$match
データ、適格文書の出力のみをフィルタリングするために使用します。標準MongoDBのクエリ操作を使用して$マッチ。対応match()
。
$limit
書類返さMongoDBの高分子パイプの数を制限するために使用します。対応するlimit()
方法
$skip
重合導管内の文書の指定された数をスキップして、文書の残りの部分を返します。対応skip()
。
$unwind
文書が配列型の複数に一つのフィールドに分割され、各アレイ内の値を含みます。対応するunwind()
方法
$group
コレクションにグループ化された文書は、統計的な結果を得るために使用することができます。対応するgroup()
方法
$sort
入力文書ソートの出力。対応するsort()
方法
$geoNear
注文した文書の出力は、地理的位置に近づきます。対応near()
。
$group
式の説明:
$sum
合計を計算
$avg
平均を計算します
$min
各グループ内のすべての文書のコレクションは最小限の価値に対応して取得します。
$max
各グループ内のすべての文書のコレクションは、最大値の価値に相当します
$push
得られたドキュメント内の値は配列内に挿入されます
$addToSet
得られた文書に配列に値を挿入するが、コピーを作成しません
$first
文書順序リソースに応じて最初の文書データを取得します。
$last
文書順序リソースに応じて、最後の文書データを取得します。
$グループは、高分子集合体の使用を示し
商品属性:_id、CREATETIME、nowPriceL、nowPriceH、数
各店舗の商品日間の最安価格と最高価格統計、平均低いです、
実行パイプライン$マッチした後、クエリ結果が得られることになるパイプライン$プロジェクトに入力され、$プロジェクトが実行パイプラインを終了し、{日、nowPriceL、nowPriceH}の形式で得られた結果は、この結果は、入力導管$基であります $グループでは、パイプは、$ソートは、最終的な結果セットの出力を終了すると、ソート$への入力導管から結果出力を終えました
Goods.aggregate([ { $試合:{ 番号:{$ GTE: 100} // 一致数> =記録100 } }、 { $プロジェクト:{ デイ:{$ substrは:[{ "$追加":[ "$ CREATETIME"、2880万]}、0、10]}、// 領域データ補正、ミリ秒単位の数の点で8時間* 60 * 1000年8 * 60 = YYYY-MM-DDに288,000後の日付フォーマットがパケット容易 「nowPriceLを」:1、// 1にオリジナルnowPriceLを設定し、ディスプレイはnowPriceL元のフィールドの結果を示す 「nowPriceH」:1、// 元nowPriceH 1に設定され、結果は、元のフィールドがnowPriceH表現することを示して avgNowPriceLを:{$ toDouble: "nowPriceL $は"}、// 最低は10進数に変換 avgNowPriceHを:{$ toDoubleは: "nowPriceH $"}、// 最高価格は、小数点に変換され 、 "dayNumber" :1 // 各グループ内のメンバーの数 } }、 { $グループ:{ _id: "$一日"、//は$日群(1日のグループ)に従う 分{$:: "nowPriceL $"}、nowPriceL // グループnowPriceLの最小見つける nowPriceH:{$最大:「$ nowPriceHを"}、// 最大の検索nowPriceHグループ avgNowPriceL:{$ AVG:" $ avgNowPriceL "}、// 統計ショップの商品の平均最低の毎日 avgNowPriceH:{$のAVG:" $ avgNowPriceH「}、// 統計お店の商品の最高価格の平均の毎日 dayNumber:{$ SUM:1 } } }、 { $ソート:{ nowPriceL: 1 // 実行され$基、得記載nowPriceLは昇順で結果セット } }])Execの(関数(ERR、グッズ){ // 結果の戻り にconsole.logを(財)。 });
注意:
データが保存されmongoodb差分領域を使用した場合、時分割動作を補正するために必要なので、地域、世界に保存された時間に応じてプラス正しいデータを取得するために$ 8時間(ミリ秒)を追加します。
$ SUBSTR :[ < 文字列> 、< 起動> 、< 長さ> ] }
https://docs.mongodb.com/manual/reference/operator/aggregation/toDouble/#exp._S_toDouble