集計演算子
項目一覧
集計パイプライン演算子は、MongoDB Atlas およびオンプレミス環境と互換性があります。
注意
構文や例など、特定の演算子の詳細については、演算子のリファレンスページへのリンクをクリックしてください
互換性
以下の環境でホストされている配置メントには、集計パイプライン演算子を使用できます。
MongoDB Atlas はクラウドでの MongoDB 配置のためのフルマネージド サービスです
MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン
MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型の MongoDB のバージョン
式演算子
式演算子は、引数を取る関数と似ています。 一般的に、これらの演算子は引数の配列をとり、次のような形式になります。
{ <operator>: [ <argument1>, <argument2> ... ] }
演算子が引数を 1 つだけ受け入れる場合は、引数リストを指定する外側の配列を省略できます。
{ <operator>: <argument> }
引数がリテラル配列の場合の解析のあいまいさを避けるには、リテラル配列を $literal
式で囲むか、引数リストを指定する外側の配列を保持する必要があります。
このページでは、式を構築するために使用できる演算子を一覧にしています。 式は、 MQLでは次のコンテキストで使用されます。
一部の集計パイプライン ステージ(
$project
、$addFields
、$group
など)クエリプロジェクションの検索
算術式演算子
算術式は、数値に対して数学演算を実行します。一部の算術式では、日付の算術演算もサポートできます。
名前 | 説明 |
---|---|
数値の絶対値を返します。 | |
数値を加算して合計を返すか、数値と日付を加算して新しい日付を返します。数値と日付を加算する場合は、数値をミリ秒として扱います。任意の数の引数式を受け入れますが、日付に解決できる式は最大で 1 つだけです。 | |
指定した数値以上の最小の整数を返します。 | |
最初の数値を 2 番目の数値で除算した結果を返します。2 つの引数式を受け入れます。 | |
e を指定された指数に上げます。 | |
指定した数値以下の最大の整数を返します。 | |
数値の自然対数を計算します。 | |
指定した基数の数値のログを計算します。 | |
数値の対数基数 10 を計算します。 | |
最初の数値の余りを 2 番目の数値で割った値を返します。2 つの引数式を受け入れます。 | |
数値を乗算して積を返します。任意の数の引数式を受け入れます。 | |
指定した指数まで数値を上げます。 | |
数値を整数または指定された小数点以下の桁に丸めます。 | |
平方根を計算します。 | |
最初の値から 2 番目の値を減算した結果を返します。2 つの値が数値の場合は、差を返します。2 つの値が日付の場合は、ミリ秒単位で差を返します。2 つの値が日付とミリ秒単位の数値の場合、結果の日付を返します。2 つの引数式を受け入れます。2 つの値が日付と数値の場合、数値から日付を減算しても意味がないため、最初に日付引数を指定します。 | |
数値を整数または指定された小数点以下の桁に切り捨てます。 |
配列式演算子
名前 | 説明 |
---|---|
指定された配列インデックスの要素を返します。 | |
キーと値のペアの配列をドキュメントに変換します。 | |
配列を連結して、連結された配列を返します。 | |
配列のサブセットを選択して、フィルター条件に一致する要素のみを含む配列を返します。 | |
配列の先頭から指定した数の要素を返します。 $firstN アキュムレータとは異なります。 | |
指定した値が配列内にあるかどうかをブール値で返します。 | |
配列内で指定された値の出現を検索し、最初に出現した位置の配列インデックスを返します。配列インデックスは 0 から始まります。 | |
オペランドが配列であるかどうかを判断します。ブール値を返します。 | |
配列の末尾から指定した数の要素を返します。 $lastN アキュムレータとは異なります。 | |
配列の各要素に部分式を適用し、結果の値の配列を順番に返します。名前付きパラメータを受け入れます。 | |
配列内の n 個の最大値を返します。$maxN アキュムレータとは異なります。 | |
配列内の n 個の最小値を返します。$minN アキュムレータとは異なります。 | |
ドキュメントを、キーと値のペアを表すドキュメントの配列に変換します。 | |
ユーザー定義の入力に従って、整数のシーケンスを含む配列を出力します。 | |
配列内の各要素に式を適用し、それらを 1 つの値に結合します。 | |
要素を逆の順序の配列を返します。 | |
配列内の要素の数を返します。引数として 1 つの式を受け入れます。 | |
配列のサブセットを返します。 | |
配列の要素をソートします。 | |
2 つの配列を結合します。 |
ビット演算子
ブール式演算子
ブール式は引数式をブール値として評価し、結果としてブール値を返します。
ブール式は、 false
ブール値に加えて、次のnull
、 0
、およびundefined
値をfalse
として評価します。ブール式は、ゼロ以外の数値と配列を含む他のすべての値をtrue
として評価します。
比較式演算子
比較式はブール値を返しますが、$cmp
は数値を返します。
比較式は 2 つの引数式を取り、異なる型の値に対して指定された BSON 比較順序を使用して、値と型の両方を比較します。
条件式演算子
名前 | 説明 |
---|---|
1 つの式を評価し、その結果に応じて他の 2 つの式のいずれかの値を返す三項演算子。順序付けられたリスト内の 3 つの式または 3 つの名前付きパラメータのいずれかを受け入れます。 | |
最初の式の null 以外の結果を返すか、最初の式の結果が null の場合は 2 番目の式の結果を返します。null 結果には、未定義の値または欠落したフィールドのインスタンスが含まれます。引数として 2 つの式を受け入れます。2 番目の式の結果は null にすることができます。 | |
一連のケース式を評価します。 true に評価される式が見つかると、 $switch 指定された式を実行し、制御フローを抜け出します。 |
カスタム集計式演算子
名前 | 説明 |
---|---|
カスタム累算器関数を定義します。 | |
カスタム関数を定義します。 |
データサイズ演算子
次の演算子は、データ要素のサイズを返します。
名前 | 説明 |
---|---|
指定された文字列またはバイナリ データ値の内容のサイズをバイト単位で返します。 | |
指定されたドキュメントのサイズをバイト単位で返します(つまりbsontype Object )。(BSON としてエンコードされた場合) |
日付式演算子
以下の演算子は、日付オブジェクトまたは日付オブジェクトの構成要素を返します。
名前 | 説明 |
---|---|
日付オブジェクトにいくつかの時間単位を追加します。 | |
2 つの日付の差を返します。 | |
日付の構成要素を指定して BSON Date オブジェクトを構築します。 | |
日付/時刻文字列をオブジェクトに変換します。 | |
日付オブジェクトからいくつかの時間単位を減算します。 | |
日付の構成部分を含むドキュメントを返します。 | |
日付を書式設定された文字列として返します。 | |
日付を切り捨てます。 | |
日付の日付を 1 から 31 までの数値で返します。 | |
日付の曜日を 1(日曜日)から7(土曜日)までの数値として返します。 | |
日付の年間通算日を 1 ~ 366(閏年)の数値として返します。 | |
日付の時間を 0 から 23 までの数値で返します。 | |
曜日番号を ISO 8601 形式で返します。範囲は 1 (月曜日)から7 (日曜日)までです。 | |
1 から53 までの範囲の ISO 8601 形式の週番号を返します。週番号は、その年の最初の木曜日を含む週(月曜日から日曜日)の1 から始まります。 | |
ISO 8601 形式の年番号を返します。年は第 1 週の月曜日(ISO 8601)から始まり、最終週の日曜日(ISO 8601)に終わります。 | |
日付のミリ秒を 0 から 999 までの数値で返します。 | |
日付の分を 0 から 59 までの数値で返します。 | |
日付の月を 1(1 月)から 12(12 月)までの数値として返します。 | |
日付の秒数を 0 から 60(うるう秒)までの数値として返します。 | |
値を日付に変換します。 | |
日付の週番号を 0(年の最初の日曜日に先行する部分的な週)から 53(うるう年)までの数値で返します。 | |
日付の年を数値で返します (例:2014)。 |
以下の算術演算子は日付オペランドを取ることができます。
リテラル式演算子
その他の演算子
名前 | 説明 |
---|---|
ドキュメントから指定したフィールドの値を返します。 バージョン 5.0 で追加 | |
0 から 1 の間のランダムな浮動小数点数を返します。 | |
指定されたレートでドキュメントをランダムに選択します。選択されるドキュメントの正確な数は実行ごとに異なりますが、選択される数量は、ドキュメントの総数に対するパーセンテージで表されるサンプルレートに近似します。 | |
MongoDB がハッシュインデックスを作成するのと同じハッシュ関数を使用して、入力式のハッシュを計算して返します。 |
オブジェクト式演算子
名前 | 説明 |
---|---|
複数のドキュメントを 1 つのドキュメントに結合します。 | |
ドキュメントを、キーと値のペアを表すドキュメントの配列に変換します。 | |
ドキュメント内の指定したフィールドを追加、更新、または削除します。 バージョン 5.0 で追加 |
集合式演算子
セット式は、配列をセットとして扱い、配列に対してセット演算を実行します。セット式は、各入力配列内の重複するエントリと要素の順序を無視します。
セット操作がセットを返す場合、操作は結果内の重複を除外して、ユニークなエントリのみを含む配列を出力します。出力配列内の要素の順序は指定されていません。
セットにネストされた配列要素が含まれている場合、セット式はネストされた配列に下降せず、最上位の配列を評価します。
名前 | 説明 |
---|---|
セットのどの要素も false と評価されない場合はtrue を返し、そうでない場合はfalse を返します。単一の引数式を受け入れます。 | |
セットのいずれかの要素が true と評価された場合はtrue を返します。それ以外の場合はfalse を返します。単一の引数式を受け入れます。 | |
最初のセットには表示されるが 2 番目のセットには表示されない要素を含むセットを返します。 相対値 を実行します 最初のセットに対する 2 番目のセットの 。厳密に 2 つの引数式を受け入れます。 | |
入力セットが同じ明確な要素を持つ場合は true を返します。2 つ以上の引数式を受け入れます。 | |
すべての入力セットに現れる要素を含むセットをします。任意の数の引数式を受け入れます。 | |
Returns true if all elements of the first set appear in the second set, including when the first set equals the second set; i.e. not a strict subset. 厳密に 2 つの引数式を受け入れます。 | |
入力セットのいずれかに現れる要素を含むセットを返します。 |
文字列式演算子
文字列式は、$concat
を除き、ASCII 文字の文字列に対してのみ明確に定義された動作を持ちます。
$concat
動作は、使用される文字に関係なく明確に定義されています。
名前 | 説明 |
---|---|
任意の数の文字列を連結します。 | |
日付/時刻文字列をオブジェクトに変換します。 | |
日付を書式設定された文字列として返します。 | |
文字列から部分文字列を検索し、最初に出現した文字列の UTF-8 バイトインデックスを返します。部分文字列が見つからない場合は、 -1 を返します。 | |
文字列から部分文字列を検索し、最初に出現した文字列の UTF-8 コードポイントのインデックスを返します。部分文字列が見つからない場合は、 -1 | |
文字列の先頭から空白または指定した文字を削除します。 | |
正規表現(regex)を文字列に適用し、最初に一致したサブストリングに関する情報を返します。 | |
正規表現(regex)を文字列に適用し、一致したすべての部分文字列に関する情報を返します。 | |
正規表現(regex)を文字列に適用し、一致するものが見つかったかどうかを示すブール値を返します。 | |
指定された入力内の一致した文字列の最初のインスタンスを置き換えます。 | |
指定された入力内の一致した文字列のすべてのインスタンスを置き換えます。 | |
文字列の末尾から空白または指定した文字を削除します。 | |
文字列を区切り文字に基づいて部分文字列に分割します。部分文字列の配列を返します。区切り文字が文字列内に見つからない場合は、元の文字列を含む配列を返します。 | |
文字列内の UTF-8 でエンコードされたバイト数を返します。 | |
UTF-8コードポイントの数を文字列で返します。 | |
大文字と小文字を区別しない文字列比較を行い、2 つの文字列が等しい場合は 0 、最初の文字列が 2 番目の文字列より大きい場合は 1 、最初の文字列が 2 番目の文字列より小さい場合は -1 を返します。 | |
文字列の部分文字列を返します。文字列内の指定された UTF-8 バイト インデックス(ゼロ ベース)の文字から始まり、指定されたバイト数だけ継続します。 | |
string の部分文字列を返します。 指定された UTF-8 コード ポイント(CP) の文字で始まる インデックス(ゼロベース)の string 内の を、指定されたコード ポイントの数だけ継続します。 | |
文字列を小文字に変換します。単一の引数式を受け入れます。 | |
値を文字列に変換します。 | |
文字列の先頭と末尾から空白または指定された文字を削除します。 | |
文字列を大文字に変換します。単一の引数式を受け入れます。 |
テキスト式演算子
名前 | 説明 |
---|---|
集計操作に関連するドキュメントごとの利用可能なメタデータにアクセスします。 |
タイムスタンプ式演算子
タイムスタンプ式演算子は、タイムスタンプから値を返します。
三角法の式演算子
三角関数の式は、数値に対して三角関数の操作を行います。角度を表す値は、常にラジアンで入力または出力されます。度とラジアンの測定値を変換するには、$degreesToRadians
と $radiansToDegrees
を使用します。
名前 | 説明 |
---|---|
ラジアンで測定された値のサインを返します。 | |
ラジアンで測定された値のコサインを返します。 | |
ラジアンで測定された値のタンジェントを返します。 | |
値の逆サイン(アーク サイン)をラジアンで返します。 | |
値の逆コサイン(アーク コサイン)をラジアンで返します。 | |
値の逆タンジェント(アーク タンジェント)をラジアンで返します。 | |
y / x の逆タンジェント (アーク タンジェント) をラジアンで返します。ここでは、y と x はそれぞれ式に渡される最初の値と 2 番目の値です。 | |
値の逆双曲線サイン(双曲線アーク サイン)をラジアンで返します。 | |
値の逆双曲線コサイン(双曲線アーク コサイン)をラジアンで返します。 | |
値の逆双曲線タンジェント(双曲線アーク タンジェント)をラジアンで返します。 | |
ラジアンで測定された値の双曲線サインを返します。 | |
ラジアンで測定された値の双曲線コサインを返します。 | |
ラジアンで測定された値の双曲線タンジェントを返します。 | |
値を度からラジアンに変換します。 | |
値をラジアンから度に変換します。 |
型式演算子
名前 | 説明 |
---|---|
値を指定した型に変換します。 | |
値をブール値に変換します。 | |
値を日付に変換します。 | |
値を Decimal128 に変換します。 | |
値を double に変換します。 | |
値を整数に変換します。 | |
値を long に変換します。 | |
値を ObjectId に変換します。 | |
値を文字列に変換します。 | |
フィールドの BSON データ型を返します。 | |
文字列を UUID に変換します。 |
アキュムレータ($group, $bucket, $bucketAuto, $setWindowFields
)
集計アキュムレータ演算子:
ドキュメントが集約パイプラインを通過するときにその状態を維持します。
合計、最大値、最小値、およびその他の値を返します。
次の集約パイプライン ステージで使用できます。
$setWindowFields
MongoDB 5.0 以降で使用可能です(ただし、$accumulator
または$mergeObjects
演算子を使用している場合は除きます。これらは$setWindowFields
では使用できません)
バージョン 5.0 での変更。
名前 | 説明 |
---|---|
ユーザー定義のアキュムレータ関数の結果を返します。 | |
グループごとのユニークな式値の配列を返します。配列要素の順序は未定義です。 バージョン 5.0 で変更、 | |
数値の平均を返します。数値以外の値は無視されます。 バージョン 5.0 で変更、 | |
グループにあるドキュメントの数を返します。
バージョン 5.0 で追加され、 | |
グループ内の最初のドキュメントの式の結果を返します。 バージョン 5.0 で変更、 | |
グループ内の最初の バージョン 5.2 で追加され、 | |
グループ内の最後のドキュメントの式の結果を返します。 バージョン 5.0 で変更、 | |
グループ内の最後の バージョン 5.2 で追加され、 | |
グループごとの最大の式の値を返します。 バージョン 5.0 で変更、 | |
グループ内の最大値を持つ バージョン 5.2 で追加。
| |
各グループの入力ドキュメントを組み合わせて作成したドキュメントを返します。 | |
グループごとの最小の式値を返します。 バージョン 5.0 で変更、 | |
グループごとのドキュメントの式値の配列を返します。 バージョン 5.0 で変更、 | |
入力値の母集団標準偏差を返します。 バージョン 5.0 で変更、 | |
入力値のサンプル標準偏差を返します。 バージョン 5.0 で変更、 | |
数値の合計を返します。数値以外の値は無視されます。 バージョン 5.0 で変更、 | |
アキュムレーター(他のステージ)
$group
ステージのアキュムレータとして使用できる演算子の中には、他のステージでは使用できてもアキュムレータとしては使用できないものもあります。これらの他の段階で使用した場合、これらの演算子は状態を維持せず、単一の引数または複数の引数のいずれかを入力として取ることができます。詳細については、各演算子のページを参照してください。
バージョン 5.0 での変更。
次のアキュムレータ演算子は、 $project
、 $addFields
、 $set
、および MongoDB 5.0 以降の$setWindowFields
ステージでも使用できます。
名前 | 説明 |
---|---|
各ドキュメントの指定された式または式のリストの平均を返します。数値以外の値は無視されます。 | |
グループ内の最初のドキュメントの式の結果を返します。 | |
グループ内の最後のドキュメントの式の結果を返します。 | |
各ドキュメントの指定された式または式のリストの最大値を返します。 | |
各ドキュメントの指定された式または式のリストの最小値を返します。 | |
入力値の母集団標準偏差を返します。 | |
入力値のサンプル標準偏差を返します。 | |
数値の合計を返します。数値以外の値は無視されます。 |
変数式演算子
名前 | 説明 |
---|---|
サブエクスプレッションのスコープ内で使用する変数を定義し、サブエクスプレッションの結果を返します。名前付きパラメータを受け入れます。 任意の数の引数式を受け入れます。 |
ウィンドウオペレーター
バージョン 5.0 で追加
ウィンドウ演算子は、ウィンドウと呼ばれるコレクション内の定義済みのドキュメント範囲から値を返します。ウィンドウは$setWindowFields
ステージで定義され、MongoDB 5.0 以降で使用可能です。
$setWindowFields
ステージでは次のウィンドウ演算子を使用できます。
名前 | 説明 |
---|---|
各ドキュメントに式を適用した結果得られるすべてのユニークな値の配列を返します。 バージョン 5.0 で変更、 | |
指定された式の平均を返します。数値以外の値は無視されます。 バージョン 5.0 で変更、 | |
2 つの数値式の母共分散を返します。 バージョン 5.0 で追加 | |
2 つの数値式 のサンプル共分散を返します。 バージョン 5.0 で追加 | |
バージョン 5.0 で追加 | |
指定されたウィンドウ内の平均変化率を返します。 バージョン 5.0 で追加 | |
バージョン 5.0 で追加 | |
数値式の指数移動平均を返します。 バージョン 5.0 で追加 | |
グループまたはウィンドウ内の最初のドキュメントの式の結果を返します。 バージョン 5.0 で変更、 | |
曲線下面積の近似値を返します。 バージョン 5.0 で追加 | |
グループまたはウィンドウ内の最後のドキュメントの式の結果を返します。 バージョン 5.0 で変更、 | |
Last observation carried forward(LOCF)法。ウィンドウ内の
バージョン 5.2 で追加。 | |
各ドキュメントに式を適用した結果取得される最大値を返します。 バージョン 5.0 で変更、 | |
各ドキュメントに式を適用した結果の最小値を返します。 バージョン 5.0 で変更、 | |
各ドキュメントに式を適用した結果の値の配列を返します。 バージョン 5.0 で変更、 | |
バージョン 5.0 で追加 | |
ステージ バージョン 5.0 で追加 | |
各ドキュメントに数値式を適用した結果の母集団標準偏差を返します。 バージョン 5.0 で変更、 | |
各ドキュメントに数値式を適用した結果取得される標本標準偏差を返します。 バージョン 5.0 で変更、 | |
各ドキュメントに数値式を 適用した結果の合計を返します。 バージョン 5.0 で変更、 | |
パイプラインステージについては、「集計ステージ」を参照してください。