Docs Menu
Docs Home
/
MongoDB Atlas
/ /

Atlas SQL 言語リファレンス

項目一覧

  • 互換性と制限
  • タイプ システム
  • データ型
  • タイプの変換
  • Schemas
  • SELECT
  • from
  • WHERE
  • グループ化基準:
  • HAVING
  • 並び替え基準:
  • 制限とオフセット
  • セット操作
  • Identifiers
  • Aliases
  • Keywords
  • リテラル
  • 括弧付き式
  • 演算子
  • サブクエリ式
  • ドキュメント式とフィールドアクセス式
  • null と欠落
  • コメント

このページでは、Atlas SQL SQLMongoDBの 柔軟な を操作するためのファーストクラスのサポートを提供するように設計された のダイアレクトであるdocument model の構文とセマンティクスについて説明します。このページでは、サポートされている句、演算子、式、関数を一覧表示して説明します。

  • Atlas SQL は SQL-92 標準に基づいています。 ただし、Atlas SQL は次の制限があるため、完全に SQL-92 と互換性はありません。

    • UNION関数はサポートされていません。 ただし、 UNION ALLはサポートされています。

    • dateデータ型はサポートされていません。 代わりにtimestampを使用してください。

    • SELECT DISTINCT はサポートされていません。

    • 間隔および日付間隔の算術演算はサポートされていません。

  • Atlas SQL は Atlas Vector Search および Atlas Search をサポートしていません。

Atlas SQL データ型は BSON types のセットです 。Atlas SQL ではこれらのすべてのタイプをクエリできます。 これらは次のとおりです。

  • string (STRING

  • ドキュメント( DOCUMENT

  • 配列( ARRAY

  • BinData (BINDATA)

  • ObjectId (OBJECTID)

  • ブール値( BOOL

  • 日付( TIMESTAMP

  • null( NULL

  • 正規表現( REGEX

  • 32 ビット整数(INT

  • double (DOUBLE

  • Long (LONG)

  • タイムスタンプ( BSON_TIMESTAMP

  • 小数( DECIMAL

  • MinKey( MINKEY

  • MaxKey( MAXKEY

  • DBPointer( DBPOINTER

  • シンボル( SYMBOL

  • JavaScriptとスコープ(JAVASCRIPTWITHSCOPE

  • JavaScript( JAVASCRIPT

Atlas SQL の各型には名前(上記の括弧内)があります。これは、必要に応じて型を参照するために使用できるキーワードです(例: CASTのような式では)。

明示的な型変換はCAST関数または::演算子を使用して表現されます。 数値型はすべて相互に同等です。 Atlas SQL では、オペランドを同じ数値型にキャストすることなく、さまざまな数値型間で操作を実行できます。

Atlas SQL は、スキーマを使用して MongoDB の柔軟なドキュメント値をタイプに変換します。 Atlas SQL スキーマは、コンパイル時に true であることが確認されている式またはコレクションに関するファセットのコレクションです。

たとえば、Atlas SQL スキーマは、式がブール値またはサブフィールドを持つドキュメントのいずれかであること、または式が長さが1の配列または正の整数であることを指定できます。

静的型制約が満たされない場合、クエリはコンパイルされません。

Atlas SQL クエリは、SQL 句の基本セットをサポートしています。 使用可能な 句は次のとおりです。

SELECT
FROM
WHERE
GROUP BY
HAVING
ORDER BY
OFFSET
LIMIT

SELECT は、すべての Atlas SQL クエリを開始します。 Atlas SQL では、 SELECT VALUESELECT VALUESをどちらも使用できます。

Atlas SQL では、エイリアスが存在するためにネストされたSELECTステートメントが必要です。

SELECT foo FROM (SELECT bar FROM baz) as subSelect

Atlas SQLはCAST()関数をサポートしています。これを使用すると、クエリ内の値を特定のデータ型に動的に変換できます。

SELECT * FROM table WHERE period_start_utc >= CAST('2023-01-01T00:00:00.000Z' AS TIMESTAMP)

FROM は、すべての Atlas SQL クエリで評価される最初の句です。

FROM は、コレクション(SELECT * FROM foo) 、配列(SELECT * FROM [{'a': 1}]) 、結合(SELECT * FROM a JOIN b) 、 派生テーブル(SELECT * FROM (SELECT a FROM foo) d)FLATTEN と UNIX などのさまざまなソースからデータを取得できます。

WHERE句は受信データのフィルタです。 その式は静的にタイプBOOLまたはNULLである必要があり、 MISSINGと評価される可能性があります。

GROUP BY データをグループ化および集計するための手段を提供します。

FLATTEN または UNIXを使用してフラット化されたフィールドでGROUP BYを使用する場合は、エイリアスが必要です。

SELECT customerAge, COUNT(*) FROM Sales GROUP BY customer.age AS customerAge

Atlas SQL は次の集計関数をサポートしています。

名前
説明
ノート

ADD_TO_ARRAY

引数を配列の末尾にプッシュします。 この関数の合計出力は配列になります。

ADD_TO_ARRAYの引数は任意の型にすることができます。

ADD_TO_SET

重複を排除する配列の末尾に引数をプッシュします。 この関数の合計出力は、重複する項目がすべて削除された配列になります。 重複は=演算子を使用して決定されます。

ADD_TO_SETの引数は任意の型にすることができます。

AVG

すべての引数の平均を返します。

引数は数値型に静的に型指定する必要があります。

COUNT

要素の数をカウントします。 COUNT(*)は条件付きですべての値をカウントします。 COUNT(<expression>)は式の結果がNULLまたはMISSINGにならないすべての値をカウントします。

COUNTの引数は任意の型にすることができます。

FIRST

グループの最初の要素を返します。

入力に決定的な順序がある場合にのみ決定的であり、それ以外は未定義です。

LAST

グループの最初の要素を返します。 入力に決定的な順序がある場合にのみ決定的であり、それ以外は未定義です。

LASTの引数は任意の型にすることができます。

MAX

Atlas SQL >演算子の順序に従って最大要素を返します。

>演算子を介して比較可能にするために、引数を静的に型指定する必要があります。

MERGE_DOCUMENTS

ドキュメントを連続してマージして作成されたドキュメントを返します。前の要素は左側として使用されます。 重複キーの場合、新しい要素内のキーの値は保持されます。 FIRSTおよびLASTと同様に、入力が決定的な順序付けを持っている場合にのみ出力が決定的になります。

引数はDOCUMENTとして静的に型指定する必要があるため、 MERGE_DOCUMENTS(DISTINCT x)はサポートされていません。

MIN

Atlas SQL <演算子によって順序付けられた最小要素を返します。

<演算子を介して比較可能にするために、引数を静的に型指定する必要があります。

STDDEV_POP

グループ全体にわたるすべての要素の標準偏差を返します。

引数は数値型に静的に型指定する必要があります。 See stdDevPop.

STDDEV_SAMP

グループ内のすべての要素のサンプルの標準偏差を返します。 stdDevPop を参照してください。

引数は数値型に静的に型指定する必要があります。

SUM

すべての引数の合計を返します。

引数は数値型に静的に型指定する必要があります。

HAVING句はWHERE句と同じように動作しますが、 GROUP BY句の後に動作します。 WHERE句と同様に、 HAVING句は静的にBOOLタイプまたはNULLタイプである必要があり、 MISSINGと評価される可能性がある 式 を使用します。 GROUP BYで定義されたエイリアスを参照し、集計関数を持つ式を含めることができます。 GROUP BYで定義されたエイリアスのみがHAVING句で使用できます。

ORDER BY句は、1 つ以上のソートキーで結果セットを並べ替える方法を提供します。 各ソートキーは、列参照、または選択された式リスト内の位置によりSELECT式を参照する整数リテラルのいずれかになります。 列参照であるソートキーは、複合識別子にすることができます。 これらの複合識別子は、データソース名で修飾したり、ドキュメント サブフィールドを参照したりできます。

Atlas SQL は、MISSING NULLNULLを の前にソートし、 を他のすべての値の前にソートします。ORDER BY句では、ソートキー式内のすべての可能な値が、 > (より大きい)および< (より小さい)演算子によって同等であることが静的に検証される必要があります。

LIMITおよびOFFSET句を使用すると、ユーザーはクエリによって返された行の一部のみを取得できます。 LIMITという数値が指定された場合、その行数以上の行は返されません。 OFFSET数値が指定されている場合、その行数は行を返す前にスキップされます。

LIMITOFFSETの数値はいずれも正の整数である必要があります。 なしでLIMIT またはOFFSET ORDER BYを使用しても、同じ結果は保証されません。

LIMITOFFSETの両方が設定されている場合、結果の残りを返す前にOFFSET行がスキップされます。この行には、 LIMIT桁の行以下が含まれる必要があります。

LIMIT i, jLIMIT i OFFSET jの短縮形です。

LIMITOFFSETはサブクエリで使用できます。

UNION ALLセット演算子は、2 つのSELECTクエリに対して 1 つの結果セットを返します。 UNION ALL演算子は結果セットから重複行を削除しません。 UNION ALL演算子によって返される結果セットには、順序が定義されていません。

Atlas SQL は、個別のUNIONINTERSECT 、またはEXCEPTのセット操作をサポートしていません。

Atlas SQL の識別子は、データベース、テーブル、および列を参照します。 Atlas SQL 識別子は、null 文字\x00を除くすべての UTF- 8文字をサポートします。

Atlas SQL 、他のセマンティック意味を持つ文字との競合を避けるために、一部の識別子は制限されています。識別子にこのような文字を含めるには、区切りである必要があります。つまり、 double引用符またはバッククションで囲む必要があります。 例えば、識別子が数字で始まる場合や予約済みのキーワードと競合する場合(例: "10cent" )。 識別子は、区切り文字が含まれているかどうかにかかわらず、大文字と小文字を区別します。

Atlas SQL のすべてのエイリアスに識別子が使用されます。 ほとんどの場合、エイリアスが同じ句で複数回使用されると、Atlas SQL はエラーを返します。 ただし、 UNION ALLの両方でエイリアスを繰り返すことができることです。 これは、自動生成エイリアスにも適用されます。

Atlas SQL キーワード( SELECTFROMJOINなど)は、非区切り識別子として使用できません。

Atlas SQL は、ブール値、null、数値、string のリテラルをサポートしています。 stringは一重引用符で囲みます。 stringリテラルに一double引用符を含めるには、二重引用符('o''clock')にします。

リテラル整数は、 32ビットの符号付き整数範囲内にある場合はINTと入力され、それ以外の場合はLONGと入力されます。 リテラル浮動小数点数または科学表記数のタイプはDOUBLEです。

Atlas SQL はすべての型のリテラルをサポートしていません。たとえば、 OBJECTIDBSON_DATEDECIMALにはリテラル構文がありません。このような型の場合、CAST演算子を使用してそれらの型の string または数値表現をそれぞれの型に取得することで、疑似リテラル値を取得できます。一部のタイプには、関連するCAST呼び出しをエイリアスする「コンストラクター」関数がある場合もあります。

括弧付き式は、括弧でグループ化された式です。 インデックス演算子が存在する場合には常に、操作の順序を区別するために括弧(または同様のメカニズム)が必要になる場合があります。 Atlas SQL には、 +::などのいくつかの挿入演算子があります。 たとえば、 1 + 2 * 3の値は7で、 (1 + 2) * 3の値は9です。

Atlas SQL は次の基本演算子をサポートしています。

  • +

  • -

  • *

  • /

  • ||

  • <

  • <=

  • !=

  • ==

  • >

  • >=

  • BETWEEN

  • AND

  • OR

  • NOT

サブクエリは、クエリ内の SQL クエリです。 サブクエリは、 式 を使用できる任意の場所で使用できます。

Atlas SQL は、スカラー サブクエリとテーブル サブクエリをサポートしています。 スカラーサブクエリは、0 または 1 行と 1 列を含む結果セットを返します。 リテラルまたは単一列の値が有効なほとんどの場所で使用できます。 テーブル サブクエリは、0 個以上の行と 1 つ以上の列を返します。

ドキュメントは、JSON オブジェクトと同様の構文で表すことができます。 キーは string である必要があり、値はサポートされている任意の 型にすることができます。 ドキュメント フィールドにアクセスするために、Atlas SQL は「ドット」表記と「括弧」表記の 2 つのオプションをサポートしています。

ドット表記は、MongoDB 集計のフィールド アクセスに似ています。 たとえば、ドキュメントdocにフィールドfが含まれている場合、そのフィールドの値にアクセスするために式doc.fが使用されます。 括弧表記では、フィールド名を囲む角括弧( [] )を使用して、その名前のフィールドにアクセスします。 たとえば、以前に説明されている同じドキュメントを考えてみましょう。そのフィールドの値にアクセスするにはdoc["f"]が使用されます。

BSON ではNULLMISSINGを区別します。 NULLの場合、リテラル値NULLを持つフィールドが存在しますが、 MISSINGの場合では、このフィールドはなくなります。

コメントはクエリ内の文字のシーケンスであり、クエリの実行に影響を与えません。 Atlas SQL は、標準の SQL コメントと C スタイルのブロックコメントの両方をサポートしています。

標準のSQLコメントは、 doubleダッシュで始まり、改行で終わります。

\-- This is a standard SQL comment

ブロックコメントは\*で始まり、 */の一致する出現で終わります。

\* This is a
multiline comment
*/

戻る

Errors