1.重合集計
SQL和で同様の重合を計算するために用いられる主なデータ、()、AVG()
構文:
。DB収集名.aggregate([ {パイプライン:式{}} ])
次のデータをSTU:
1.1パイプライン
UnixおよびLinux管は、典型的には、次のコマンドの入力として出力する電流指令を用いています。
PS AJX | グリップモンゴ
MongoDBのでは、パイプは、文書が一旦パイプラインにより、処理が処理された後、同一の効果を有します。
一般的なパイプライン:
$グループ:パケット内のドキュメントのコレクションは、統計的な結果を得るために使用することができます。
$マッチ:フィルタデータ、適格文書の出力のみに使用。標準MongoDBのクエリ操作を使用して$マッチ。
$プロジェクト:入力文書の構造を変更します。、名前の変更、フィールドの追加や削除するために使用することができ、また、ネストされた計算とドキュメントを作成するために使用することができます。
並び替え$:ソート出力を入力文書の後。
$リミット:重合のMongoDBリターンパイプという文書の数を制限します。
$スキップ:重合導管内の文書の指定された数をスキップして、文書の残りの部分を返します。
$アンワインド:アレイ型フィールドの複数に分割文書は、各アレイの値を含みます。
$ GeoNear:地理的位置の秩序あるドキュメントへの出力があります。
1.2式
入力と出力文書を処理します。
構文:
式:「$列名」
一般的な表現:
$合計:合計、$の合計を計算:カウントは同じカウントを示し、
$平均:計算された平均
$分:最小キャプチャ
$マックス:GETの最大
$プッシュ:結果の配列内の文書を挿入し、配列の内容が選択されている場
$ファースト:文書順序リソースに応じて最初の文書データを取得します
$ラスト:文書順序リソースに応じて、最後の文書データを取得します。
1.3 $グループ
コレクションにグループ化された文書は、統計的な結果を得るために使用することができます。
「$フィールドを」形式のフィールドを使用して、パケットの用語で表現_id
例:
統計男の子と女の子の総数:
db.stu.aggregate([ {$基:{_ ID: '性別'、カウンタ:{$和:1}}} ])
ジェンダーと統計学生学生名:
db.stu.aggregate([ {$基:{_ ID: '性別'、カウンタ:{$プッシュ: '$名'}}} ])
ドキュメント・コンテンツの利用$$ ROOT配列は、結果セットに追加することができます。
db.stu.aggregate([ {$基:{_ ID: '性別'、名:{$プッシュ: '$$ ROOT'}}} ])
すべての文書のコレクションが一緒にグループ化されました。
学生の総数は、平均年齢を探しています:
db.stu.aggregate([ {$基:{_ ID:ヌル、カウンタ:{$合計:1}でAvgAge:{$平均: '$年齢'}}} ])
1.4 $マッチ
これは、フィルタデータ、適格文書の出力のみに使用しました。
MongoDBは、標準クエリ演算子を使用して。
例:
20人の学生よりも古い問い合わせ:
db.stu.aggregate([ {$マッチ:{年齢:{$ GT:20}}} ])
20歳以上のクエリの男の子、女の子の数。
db.stu.aggregate([ {$マッチ:{年齢:{$ GT:20}}}、 {$基:{_ ID: '$性別'、カウンタ:{$和:1}}} ])
1.5 $プロジェクト
計算を作成、そのような名前の変更、追加、削除フィールドとして、入力文書の構造を変更します。
例:
クエリ学生の名前、年齢。
db.stu.aggregate([ {$プロジェクト:{_ ID:0、名前:1、年齢:1}} ])
クエリ男の子、女の子の数、出力数。
db.stu.aggregate([ {$基:{_ ID: '$性別'、カウンタ:{$和:1}}}、 {$プロジェクト:{_ ID:0、カウンタ:1}} ])
1.6 $ソート
入力文書ソートの出力。
例:
年齢の昇順により、クエリの学生、。
db.stu.aggregate([ {$ソート:{年齢:1}} ])
数に従って降順でクエリ男の子と女の子の数、。
db.stu.aggregate([ {$基:{_ ID: '$性別'、カウンタ:{$和:1}}}、 {$ソート:{カウンター:-1}} ])
1.7 $の制限
パイプラインによって返された文書の限られた凝集数。
クエリ2学生情報。
db.stu.aggregate([ {$限界:2} ])
1.8 $skip
跳过指定数量的文档,并返回余下的文档。
查询从第3条开始的学生信息。
db.stu.aggregate([ {$skip:2} ])
统计男生、女生人数,按人数升序,取第二条数据。
db.stu.aggregate([ {$group:{_id:'$gender',counter:{$sum:1}}}, {$sort:{counter:1}}, {$skip:1}, {$limit:1} ])
注意顺序:先写skip,再写limit。