Docs Menu
Docs Home
/
MongoDB Atlas
/ /

Atlas SQL ステートメントを使用したクエリ

項目一覧

  • サンプル クエリ
  • SELECT ステートメント
  • 制限ステートメント
  • WHERE ステートメント
  • FLATTEN と UNIX をする
  • FLATTEN
  • 平面の例
  • UNWIND
  • 展開の例
  • FLATTEN と UNIX を組み合わせた例

ページには、Atlas SQL クエリの例が示されています。 SQL 構文を使用してコレクションをクエリする基本的な例と、 FLATTENUNWINDを使用してネストされたデータを処理するより高度な例があります。

高度な構成サンプル フェデレーティッドデータベースインスタンスに対して次の Atlas SQL クエリを実行してみてください。または、独自のデータを読み取るように変更します。

注意

SELECT * FROM sessions;

Atlas SQL は、 Sessionsコレクションからすべてのドキュメントを返します。

SELECT * FROM users LIMIT 2;

Atlas SQL は、 Usersコレクションから 2 つのドキュメントを返します。

SELECT * FROM users WHERE name = 'Jon Snow';

Atlas SQL は、ユーザーのnameJon SnowであるドキュメントをUsersコレクションから返します。

このセクションでは、ドキュメント構造の操作を容易にする 2 つの Atlas SQL 機能について説明します。 これらは Atlas SQL に固有です。

FLATTEN 半構造化データ(JSON 内の名前と値のペア)を別々の列にフラット化します。 フィールド名は、そのフィールドのすべての値を行に保持する列名になります。

ネストされたドキュメントをフラット化するための構文は、データソースと オプションと組み合わせてFROM句で使用できるFLATTEN関数です。

SELECT *
FROM FLATTEN(<data source>
WITH DEPTH => <integer>,
SEPARATOR => <string>
)
変数
必要性
説明
<data source>
必須
データソースをフラット化する
DEPTH
任意
フラット化するサブドキュメントのレベル数を示す正の整数。 デフォルトでは、すべてのレベルのサブドキュメントがフラット化されます。
SEPARATOR
任意
フィールド名を連結するときに区切り文字として使用するstring 。 デフォルトは_です。

サンプルシナリオでは、 customerInfoコレクションには次のように構造されたドキュメントが含まれています。

{
id: 1,
location: "New York",
customer: {
age: 50,
email: "customer@email.com",
satisfaction: 5
}
}

クエリSELECT * FROM customerInfoを実行すると、Atlas SQL は次の最上位フィールドを持つドキュメントを返します。

id
1
location
"New Collection"
customer
{経過時間: 50、メール: "customer@email.com"、満足度: 5 }

クエリSELECT * FROM FLATTEN(customerInfo)を実行すると、Atlas SQL は次の最上位フィールドを持つドキュメントを返します。

id
1
location
"New Collection"
customer_age
50
customer_email
"customer@email.com"
customer_satisfaction
5

FLATTENを使用すると、元のドキュメントの各フラット化フィールドは結果セットの最上位フィールドになります。 ネストされたフィールドは親フィールド名と連結され、デフォルトの区切り文字_で区切られます。

UNWIND 入力データソースから配列フィールドを分解して、その配列内の各項目に対して 1 行を出力します。 展開の詳細については、 $unwind集計ステージのドキュメントを参照してください。

配列フィールドを展開する構文は、データソースと オプションと組み合わせてFROM句で使用できるUNWIND関数です。

SELECT *
FROM UNWIND(<data source>
WITH PATH => <array_path>,
INDEX => <identifier>,
OUTER => <bool>
)
変数
必要性
説明
<data source>
必須
展開する配列フィールドのソース。
PATH
必須
展開するデータソース内のフィールドへのパス。
INDEX
任意
インデックス列を割り当てる名前。 省略した場合、Atlas SQL はインデックス フィールドを作成しません。
OUTER
任意
null、欠落、または空の配列値を持つドキュメントが保持されるかどうかを示すフラグ。 trueの場合、null、欠落、または空の配列値を持つドキュメントは保持されます。 デフォルトはfalseです。

サンプルシナリオでは、 customerInfoコレクションには次のように構造されたドキュメントが含まれています。

{
id: 1,
location: "New York",
customer: {
age: 50,
email: "customer@email.com",
satisfaction: 5
},
visits: [
{
year: 2020,
score: 10
},
{
year: 2021,
score: 8
},
{
year: 2022
score: 7
}
]
}

クエリSELECT * FROM customerInfoを実行すると、Atlas SQL は次の最上位フィールドを持つドキュメントを返します。

id
1
location
"New Collection"
customer
{経過時間: 50、メール: "customer@email.com"、満足度: 5 }
visits
[ { 年: 2020 、スコア: 10 }、{ 年: 2021 、スコア: 8 }、{ 年: 2022 、スコア: 7 }

クエリSELECT * FROM UNWIND(customerInfo WITH PATH => visits, INDEX => idx)を実行すると、Atlas SQL は次の最上位フィールドを持つドキュメントを返します。

id
1
1
1
location
"New Collection"
"New Collection"
"New Collection"
customer
{経過時間: 50、メール: "customer@email.com"、満足度: 5 }
{経過時間: 50、メール: "customer@email.com"、満足度: 5 }
{経過時間: 50、メール: "customer@email.com"、満足度: 5 }
idx
0
1
2
visits
{ 年: 2020 、スコア: 10 }
{ 年: 2021 、スコア: 8 }
{ 年: 2022 、スコア: 7 }

UNWINDPATH => visitsを併用すると、各visitsオブジェクトはテーブル行になります。

次の例では、FLATTEN 関数とUNWIND 関数を組み合わせています。

サンプルシナリオでは、 customerInfoコレクションには次のように構造されたドキュメントが含まれています。

{
id: 1,
location: "New York",
customer: {
age: 50,
email: "customer@email.com",
satisfaction: 5
},
visits: [
{
year: 2020,
score: 10
},
{
year: 2021,
score: 8
},
{
year: 2022
score: 7
}
]
}

クエリSELECT * FROM customerInfoを実行すると、Atlas SQL は次の最上位フィールドを持つドキュメントを返します。

id
1
location
"New Collection"
satisfaction
5
customer
{経過時間: 50、メール: "customer@email.com"、満足度: 5 }
visits
[ { 年: 2020 、スコア: 10 }、{ 年: 2021 、スコア: 8 }、{ 年: 2022 、スコア: 7 }

クエリSelect * from FLATTEN(UNWIND(customerInfo WITH PATH => visits, INDEX => idx))を実行すると、Atlas SQL は次の最上位フィールドを持つドキュメントを返します。

id
1
1
1
location
"New Collection"
"New Collection"
"New Collection"
satisfaction
5
5
5
customer_age
50
50
50
customer_email
"customer@email.com"
"customer@email.com"
"customer@email.com"
idx
0
1
2
visits_year
2020
2021
2022
visits_score
10
8
7

FLATTEN関数とUNWIND 関数の両方を使用すると、visits 配列が展開され、結果のドキュメントがフラット化されます。

戻る

Power BI