Azure Cosmos DB の MongoDB 用 API を使用してデータのクエリを実行するQuery data by using Azure Cosmos DB's API for MongoDB

Azure Cosmos DB の MongoDB 用 API では、MongoDB のクエリがサポートされています。The Azure Cosmos DB's API for MongoDB supports MongoDB queries.

この記事に含まれるタスクは次のとおりです。This article covers the following tasks:

  • MongoDB シェルを使用して Cosmos データベースに格納されているデータのクエリを実行するQuerying data stored in your Cosmos database using MongoDB shell

まずは、このドキュメントの例を使用したり、MongoDB シェルでの Azure Cosmos DB に対するクエリの実行に関するビデオを見ることから始めます。You can get started by using the examples in this document and watch the Query Azure Cosmos DB with MongoDB shell video .

サンプル ドキュメントSample document

この記事のクエリは、次のサンプル ドキュメントを使用します。The queries in this article use the following sample document.

{
  "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
}

サンプル クエリ 1Example query 1

上記の家族に関するサンプル ドキュメントに対して、次のクエリは ID フィールドが WakefieldFamily と一致するドキュメントを返します。Given the sample family document above, the following query returns the documents where the id field matches WakefieldFamily.

クエリQuery

db.families.find({ id: "WakefieldFamily"})

結果Results

{
"_id": "ObjectId(\"58f65e1198f3a12c7090e68c\")",
"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
}

サンプル クエリ 2Example query 2

次のクエリでは、家族のすべての子が返されます。The next query returns all the children in the family.

クエリQuery

db.families.find( { id: "WakefieldFamily" }, { children: true } )

結果Results

{
"_id": "ObjectId("58f65e1198f3a12c7090e68c")",
"children": [
  {
    "familyName": "Merriam",
    "givenName": "Jesse",
    "gender": "female",
    "grade": 1,
    "pets": [
      { "givenName": "Goofy" },
      { "givenName": "Shadow" }
    ]
  },
  {
    "familyName": "Miller",
    "givenName": "Lisa",
    "gender": "female",
    "grade": 8
  }
]
}

サンプル クエリ 3Example query 3

次のクエリでは、登録されているすべての家族が返されます。The next query returns all the families that are registered.

クエリQuery

db.families.find( { "isRegistered" : true })

結果 ドキュメントは返されません。Results No document will be returned.

サンプル クエリ 4Example query 4

次のクエリでは、登録されていないすべての家族が返されます。The next query returns all the families that are not registered.

クエリQuery

db.families.find( { "isRegistered" : false })

結果Results

 {
"_id": ObjectId("58f65e1198f3a12c7090e68c"),
"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

}}

サンプル クエリ 5Example query 5

次のクエリでは、登録されていない、州が NY のすべての家族が返されます。The next query returns all the families that are not registered and state is NY.

クエリQuery

 db.families.find( { "isRegistered" : false, "address.state" : "NY" })

結果Results

 {
"_id": ObjectId("58f65e1198f3a12c7090e68c"),
"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

}}

サンプル クエリ 6Example query 6

次のクエリでは、子が 8 年生のすべての家族が返されます。The next query returns all the families where children grades are 8.

クエリQuery

 db.families.find( { children : { $elemMatch: { grade : 8 }} } )

結果Results

 {
"_id": ObjectId("58f65e1198f3a12c7090e68c"),
"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

}}

サンプル クエリ 7Example query 7

次のクエリでは、子の配列サイズが 3 のすべての家族が返されます。The next query returns all the families where size of children array is 3.

クエリQuery

  db.Family.find( {children: { $size:3} } )

結果Results

子が 2 人より多い家族はないため、返される結果はありません。No results will be returned as there are no families with more than two children. パラメーターが 2 の場合のみ、このクエリは成功し、ドキュメント全体を返します。Only when parameter is 2 this query will succeed and return the full document.

次の手順Next steps

このチュートリアルでは、次の手順を行いました。In this tutorial, you've done the following:

  • Azure Cosmos DB の MongoDB 用 API を使用してクエリを実行する方法を理解しました。Learned how to query using Cosmos DB’s API for MongoDB

次のチュートリアルに進んで、データをグローバルに分散する方法について学習できます。You can now proceed to the next tutorial to learn how to distribute your data globally.