式は、値に変換される MQLコンポーネントです。式はステートレスです。つまり、式 の構築に使用された値を変更せずに値を返します。次のMQLコンテキストで式を使用できます。
一部の集計パイプラインステージ(
$project
、$addFields
、$group
など)コマンドプロジェクションの検索
MongoDB クエリ言語では、次のコンポーネントから式を構築できます。
コンポーネント | 例 |
---|---|
定数 |
|
演算子 | |
フィールドパス式 |
|
例、{ $add: [ 3, "$inventory.total" ] }
は、$add
演算子と 2 つのオペランドで構成される式です。
定数
3
フィールドパス式
"$inventory.total"
式は、入力ドキュメントのパスinventory.total
の値に3を追加した結果を返します。
式演算子は、引数を取る関数と似ています。 一般的に、これらの演算子は引数の配列をとり、次のような形式になります。
{ <operator>: [ <argument1>, <argument2> ... ] }
演算子が引数を 1 つだけ受け入れる場合は、引数リストを指定する外側の配列を省略できます。
{ <operator>: <argument> }
このページでは、式の構築に使用できる演算子をリストします。
算術演算子
算術式は、数値に対して数学演算を実行します。一部の算術式では、日付の算術演算もサポートできます。
名前 | 説明 |
---|---|
数値の絶対値を返します。 | |
数値を加算して合計を返すか、数値と日付を加算して新しい日付を返します。数値と日付を加算する場合は、数値をミリ秒として扱います。任意の数の引数式を受け入れますが、日付に解決できる式は最大で 1 つだけです。 | |
指定した数値以上の最小の整数を返します。 | |
最初の数値を 2 番目の数値で除算した結果を返します。2 つの引数式を受け入れます。 | |
e を指定された指数に上げます。 | |
指定した数値以下の最大の整数を返します。 | |
数値の自然対数を計算します。 | |
指定した基数の数値のログを計算します。 | |
数値の対数基数 10 を計算します。 | |
最初の数値の余りを 2 番目の数値で割った値を返します。2 つの引数式を受け入れます。 | |
数値を乗算して積を返します。任意の数の引数式を受け入れます。 | |
指定した指数まで数値を上げます。 | |
数値を整数または指定された小数点以下の桁に丸めます。 | |
シノニム(同意語) 関数の結果を返します(標準偏差 1 の正規分布の統合)。 | |
平方根を計算します。 | |
最初の値から 2 番目の値を減算した結果を返します。2 つの値が数値の場合は、差を返します。2 つの値が日付の場合は、ミリ秒単位で差を返します。2 つの値が日付とミリ秒単位の数値の場合、結果の日付を返します。2 つの引数式を受け入れます。2 つの値が日付と数値の場合、数値から日付を減算しても意味がないため、最初に日付引数を指定します。 | |
数値を整数または指定された小数点以下の桁に切り捨てます。 |
配列演算子
名前 | 説明 |
---|---|
指定された配列インデックスの要素を返します。 | |
キーと値のペアの配列をドキュメントに変換します。 | |
配列を連結して、連結された配列を返します。 | |
配列のサブセットを選択して、フィルター条件に一致する要素のみを含む配列を返します。 | |
配列の先頭から指定した数の要素を返します。 | |
指定した値が配列内にあるかどうかをブール値で返します。 | |
配列内で指定された値の出現を検索し、最初に出現した位置の配列インデックスを返します。配列インデックスは 0 から始まります。 | |
オペランドが配列であるかどうかを判断します。ブール値を返します。 | |
配列の末尾から指定した数の要素を返します。 | |
配列の各要素に部分式を適用し、結果の値の配列を順番に返します。名前付きパラメータを受け入れます。 | |
配列内の | |
配列内の | |
ドキュメントを、キーと値のペアを表すドキュメントの配列に変換します。 | |
ユーザー定義の入力に従って、整数のシーケンスを含む配列を出力します。 | |
配列内の各要素に式を適用し、それらを 1 つの値に結合します。 | |
要素を逆の順序の配列を返します。 | |
配列内の要素の数を返します。引数として 1 つの式を受け入れます。 | |
配列のサブセットを返します。 | |
配列の要素をソートします。 | |
2 つの配列を結合します。 |
ビット演算子
ブール演算子
ブール式は引数式をブール値として評価し、結果としてブール値を返します。
ブール式は、 false
ブール値に加えて、次のnull
、 0
、およびundefined
値をfalse
として評価します。ブール式は、ゼロ以外の数値と配列を含む他のすべての値をtrue
として評価します。
比較演算子
比較式はブール値を返しますが、$cmp
は数値を返します。
比較式は 2 つの引数式を取り、異なる型の値に対して指定された BSON 比較順序を使用して、値と型の両方を比較します。
条件演算子
名前 | 説明 |
---|---|
1 つの式を評価し、その結果に応じて他の 2 つの式のいずれかの値を返す三項演算子。順序付けられたリスト内の 3 つの式または 3 つの名前付きパラメータのいずれかを受け入れます。 | |
最初の式の null 以外の結果を返すか、最初の式の結果が null の場合は 2 番目の式の結果を返します。null 結果には、未定義の値または欠落したフィールドのインスタンスが含まれます。引数として 2 つの式を受け入れます。2 番目の式の結果は null にすることができます。 | |
一連のケース式を評価します。 |
カスタム集計演算子
名前 | 説明 |
---|---|
カスタム累算器関数を定義します。 | |
カスタム関数を定義します。 |
データサイズ演算子
次の演算子は、データ要素のサイズを返します。
名前 | 説明 |
---|---|
指定された文字列またはバイナリ データ値の内容のサイズをバイト単位で返します。 | |
指定されたドキュメントのサイズをバイト単位で返します(つまりbsontype |
日付演算子
以下の演算子は、日付オブジェクトまたは日付オブジェクトの構成要素を返します。
名前 | 説明 |
---|---|
日付オブジェクトにいくつかの時間単位を追加します。 | |
2 つの日付の差を返します。 | |
日付の構成要素を指定して BSON Date オブジェクトを構築します。 | |
日付/時刻文字列をオブジェクトに変換します。 | |
日付オブジェクトからいくつかの時間単位を減算します。 | |
日付の構成部分を含むドキュメントを返します。 | |
日付を書式設定された文字列として返します。 | |
日付を切り捨てます。 | |
日付の日付を 1 から 31 までの数値で返します。 | |
日付の曜日を 1(日曜日)から7(土曜日)までの数値として返します。 | |
日付の年間通算日を 1 ~ 366(閏年)の数値として返します。 | |
日付の時間を 0 から 23 までの数値で返します。 | |
曜日番号を ISO 8601 形式で返します。範囲は | |
| |
ISO 8601 形式の年番号を返します。年は第 1 週の月曜日(ISO 8601)から始まり、最終週の日曜日(ISO 8601)に終わります。 | |
日付のミリ秒を 0 から 999 までの数値で返します。 | |
日付の分を 0 から 59 までの数値で返します。 | |
日付の月を 1(1 月)から 12(12 月)までの数値として返します。 | |
日付の秒数を 0 から 60(うるう秒)までの数値として返します。 | |
値を日付に変換します。 | |
日付の週番号を 0(年の最初の日曜日に先行する部分的な週)から 53(うるう年)までの数値で返します。 | |
日付の年を数値で返します (例:2014)。 |
以下の算術演算子は日付オペランドを取ることができます。
アキュムレータに関連する式
$group
ステージの一部のアキュムレータは、式として使用することもできます。式として使用すると、指定された入力引数または入力配列の集計値を計算します。
次の演算子はアキュムレータですが、値の配列を入力として受け入れる式として使用することもできます。
名前 | 説明 |
---|---|
各ドキュメントの指定された式または式のリストの平均を返します。数値以外の値は無視されます。 | |
2 つ以上の配列の要素を組み合わせた 1 つの配列を返します。 バージョン8.1の新機能。 | |
グループ内の最初のドキュメントの式の結果を返します。 | |
グループ内の最後のドキュメントの式の結果を返します。 | |
各ドキュメントの指定された式または式のリストの最大値を返します。 | |
各ドキュメントの指定された式または式のリストの最小値を返します。 | |
指定パーセンタイル値に対応するスカラー値の配列を返します。 バージョン 7.0 で追加。 | |
2 つ以上の配列を受け取り、任意の入力配列に現れる要素を含む配列を返します。 バージョン8.1の新機能。 | |
入力値の母集団標準偏差を返します。 | |
入力値のサンプル標準偏差を返します。 | |
数値の合計を返します。数値以外の値は無視されます。 |
リテラル式演算子
その他の演算子
名前 | 説明 |
---|---|
ドキュメントから指定したフィールドの値を返します。 | |
0 から 1 の間のランダムな浮動小数点数を返します。 | |
指定されたレートでドキュメントをランダムに選択します。選択されるドキュメントの正確な数は実行ごとに異なりますが、選択される数量は、ドキュメントの総数に対するパーセンテージで表されるサンプルレートに近似します。 | |
MongoDB がハッシュインデックスを作成するのと同じハッシュ関数を使用して、入力式のハッシュを計算して返します。 |
オブジェクト演算子
名前 | 説明 |
---|---|
複数のドキュメントを 1 つのドキュメントに結合します。 | |
ドキュメントを、キーと値のペアを表すドキュメントの配列に変換します。 | |
ドキュメント内の指定したフィールドを追加、更新、または削除します。 バージョン 5.0 で追加 |
集合演算子
セット式は、配列をセットとして扱い、配列に対してセット演算を実行します。セット式は、各入力配列内の重複するエントリと要素の順序を無視します。
セット操作がセットを返す場合、操作は結果内の重複を除外して、ユニークなエントリのみを含む配列を出力します。出力配列内の要素の順序は指定されていません。
セットにネストされた配列要素が含まれている場合、セット式はネストされた配列に下降せず、最上位の配列を評価します。
名前 | 説明 |
---|---|
セットのどの要素も | |
セットのいずれかの要素が | |
最初のセットには表示されるが 2 番目のセットには表示されない要素を含むセットを返します。つまり、最初のセットに対する 2 番目のセットの 相対補完 を実行します。厳密に 2 つの引数式を受け入れます。 | |
入力セットが同じ明確な要素を持つ場合は | |
すべての入力セットに現れる要素を含むセットをします。任意の数の引数式を受け入れます。 | |
最初のセットのすべての要素が 2 番目のセットに出現する場合(最初のセットが 2 番目のセットと等しい場合を含む)、 | |
入力セットのいずれかに現れる要素を含むセットを返します。 |
string演算子
文字列式は、$concat
を除き、ASCII 文字の文字列に対してのみ明確に定義された動作を持ちます。
$concat
動作は、使用される文字に関係なく明確に定義されています。
名前 | 説明 |
---|---|
任意の数の文字列を連結します。 | |
日付/時刻文字列をオブジェクトに変換します。 | |
日付を書式設定された文字列として返します。 | |
文字列から部分文字列を検索し、最初に出現した文字列の UTF-8 バイトインデックスを返します。部分文字列が見つからない場合は、 | |
文字列から部分文字列を検索し、最初に出現した文字列の UTF-8 コードポイントのインデックスを返します。部分文字列が見つからない場合は、 | |
文字列の先頭から空白または指定した文字を削除します。 | |
正規表現(regex)を文字列に適用し、最初に一致したサブストリングに関する情報を返します。 | |
正規表現(regex)を文字列に適用し、一致したすべての部分文字列に関する情報を返します。 | |
正規表現(regex)を文字列に適用し、一致するものが見つかったかどうかを示すブール値を返します。 | |
指定された入力内の一致した文字列の最初のインスタンスを置き換えます。 | |
指定された入力内の一致した文字列のすべてのインスタンスを置き換えます。 | |
文字列の末尾から空白または指定した文字を削除します。 | |
文字列を区切り文字に基づいて部分文字列に分割します。部分文字列の配列を返します。区切り文字が文字列内に見つからない場合は、元の文字列を含む配列を返します。 | |
文字列内の UTF-8 でエンコードされたバイト数を返します。 | |
UTF-8コードポイントの数を文字列で返します。 | |
大文字と小文字を区別しない文字列比較を行い、2 つの文字列が等しい場合は | |
文字列の部分文字列を返します。文字列内の指定された UTF-8 バイト インデックス(ゼロ ベース)の文字から始まり、指定されたバイト数だけ継続します。 | |
string の部分文字列を返します。string 内の指定された UTF-8 コード点(CP)インデックス(ゼロ ベース)の文字から始まり、指定されたコード ポイントの数だけ継続します。 | |
文字列を小文字に変換します。単一の引数式を受け入れます。 | |
値を文字列に変換します。 | |
文字列の先頭と末尾から空白または指定された文字を削除します。 | |
文字列を大文字に変換します。単一の引数式を受け入れます。 |
暗号化された string 演算子
暗号化された string 式は、Queryable Encryptionが有効になっているコレクション内の暗号化されたフィールドに対する引数を評価し、ブール値を返します。
名前 | 説明 |
---|---|
暗号化された string の文字のサブセットが指定された string と一致する場合は | |
暗号化された string の最後の文字が指定された string と一致する場合は | |
暗号化された string の正規化された string 形式が、指定された string の正規化された string 形式と一致する場合は | |
暗号化された string の最初の文字が指定された string と一致する場合は |
テキスト演算子
名前 | 説明 |
---|---|
集計操作に関連するドキュメントごとの利用可能なメタデータにアクセスします。 |
タイムスタンプ演算子
タイムスタンプ式演算子は、タイムスタンプから値を返します。
三角法の演算子
三角関数の式は、数値に対して三角関数の操作を行います。角度を表す値は、常にラジアンで入力または出力されます。度とラジアンの測定値を変換するには、$degreesToRadians
と $radiansToDegrees
を使用します。
名前 | 説明 |
---|---|
ラジアンで測定された値のサインを返します。 | |
ラジアンで測定された値のコサインを返します。 | |
ラジアンで測定された値のタンジェントを返します。 | |
値の逆サイン(アーク サイン)をラジアンで返します。 | |
値の逆コサイン(アーク コサイン)をラジアンで返します。 | |
値の逆タンジェント(アーク タンジェント)をラジアンで返します。 | |
| |
値の逆双曲線サイン(双曲線アーク サイン)をラジアンで返します。 | |
値の逆双曲線コサイン(双曲線アーク コサイン)をラジアンで返します。 | |
値の逆双曲線タンジェント(双曲線アーク タンジェント)をラジアンで返します。 | |
ラジアンで測定された値の双曲線サインを返します。 | |
ラジアンで測定された値の双曲線コサインを返します。 | |
ラジアンで測定された値の双曲線タンジェントを返します。 | |
値を度からラジアンに変換します。 | |
値をラジアンから度に変換します。 |
型演算子
名前 | 説明 |
---|---|
値を指定した型に変換します。 | |
値をブール値に変換します。 | |
値を日付に変換します。 | |
値を Decimal128 に変換します。 | |
値を double に変換します。 | |
値を整数に変換します。 | |
値を long に変換します。 | |
値を ObjectId に変換します。 | |
値を文字列に変換します。 | |
フィールドの BSON データ型を返します。 | |
文字列を UUID に変換します。 |
変数演算子
名前 | 説明 |
---|---|
サブエクスプレッションのスコープ内で使用する変数を定義し、サブエクスプレッションの結果を返します。名前付きパラメータを受け入れます。 任意の数の引数式を受け入れます。 |
ウィンドウオペレーター
ウィンドウ演算子は、ウィンドウと呼ばれるコレクション内の定義済みのドキュメント範囲から値を返します。ウィンドウは$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 で変更、 | |