チュートリアル: Azure Cosmos DB for NoSQL のデータに対してクエリを実行する

適用対象: NoSQL

Azure Cosmos DB for NoSQL では、組み込みのクエリ構文を使用したドキュメントのクエリがサポートされています。 この記事には、1 つのサンプル ドキュメントと 2 つのサンプル クエリおよび結果が含まれます。

この記事に含まれるタスクは次のとおりです。

  • 組み込みのクエリ構文を使用して NoSQL データにクエリを実行する

前提条件

このチュートリアルでは、Azure Cosmos DB アカウント、データベース、コンテナーがあると仮定しています。

これらのリソースがない場合は、 次のクイックスタートを実行します: Azure portal を使って Azure Cosmos DB のアカウント、データベース、コンテナー、項目を作成する

クエリは、Azure portal の Azure Cosmos DB Explorer を使用して実行できます。 REST API またはさまざまな SDK を使用してクエリを実行することもできます。

クエリの詳細については、「クエリの使用を開始する」を参照してください。

サンプル ドキュメント

この記事のクエリは、次のサンプル ドキュメントを使用します。

{
  "id": "WakefieldFamily",
  "parents": [
    { "familyName": "Wakefield", "givenName": "Robin" },
    { "familyName": "Miller", "givenName": "Ben" }
  ],
  "children": [
    {
      "familyName": "Merriam", 
      "givenName": "Jesse", 
      "gender": "female", "grade": 1,
      "pets": [
          { "givenName": "Goofy" },
          { "givenName": "Shadow" }
      ]
    },
    { 
      "familyName": "Miller", 
        "givenName": "Lisa", 
        "gender": "female", 
        "grade": 8 
    }
  ],
  "address": { "state": "NY", "county": "Manhattan", "city": "NY" },
  "creationDate": 1431620462,
  "isRegistered": false
}

すべてのフィールドを選択し、フィルターを適用する

家族に関するサンプル ドキュメントに対して、次のクエリは ID フィールドが WakefieldFamily と一致するドキュメントを返します。 SELECT * ステートメントであるため、クエリの出力は完全な JSON ドキュメントになります。

クエリ:

SELECT * 
FROM Families f 
WHERE f.id = "WakefieldFamily"

結果:

{
  "id": "WakefieldFamily",
  "parents": [
    { "familyName": "Wakefield", "givenName": "Robin" },
    { "familyName": "Miller", "givenName": "Ben" }
  ],
  "children": [
    {
      "familyName": "Merriam", 
      "givenName": "Jesse", 
      "gender": "female", "grade": 1,
      "pets": [
          { "givenName": "Goofy" },
          { "givenName": "Shadow" }
      ]
    },
    { 
      "familyName": "Miller", 
        "givenName": "Lisa", 
        "gender": "female", 
        "grade": 8 
    }
  ],
  "address": { "state": "NY", "county": "Manhattan", "city": "NY" },
  "creationDate": 1431620462,
  "isRegistered": false
}

子コレクション フィールドのクロス積を選択する

次のクエリでは、ID が WakefieldFamily と一致する家族の子供の名前がすべて返されます。

クエリ:

SELECT c.givenName 
FROM Families f 
JOIN c IN f.children 
WHERE f.id = 'WakefieldFamily'

結果:

[
  {
    "givenName": "Jesse"
  },
  {
    "givenName": "Lisa"
  }
]

次のステップ

このチュートリアルでは、次の作業を行いました。

  • 組み込みのクエリ構文を使用してクエリを実行する方法を学習しました

次のチュートリアルに進んで、データをグローバルに分散する方法について学習できます。