Запрос данных с использованием API Azure Cosmos DB для MongoDBQuery data by using Azure Cosmos DB's API for MongoDB

API Azure Cosmos DB для MongoDB поддерживает запросы MongoDB.The Azure Cosmos DB's API for MongoDB supports MongoDB queries.

В этой статье рассматриваются следующие задачи:This article covers the following tasks:

  • Запрос данных, хранящихся в базе данных Cosmos, с помощью оболочки MongoDBQuerying data stored in your Cosmos database using MongoDB shell

Начать работу можно с использования примеров в этом документе и просмотра видео о запросе Azure Cosmos DB с помощью оболочки MongoDB.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

С учетом приведенного выше образца документа сведений о семье следующий запрос возвращает документы, у которых поле идентификации соответствует 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

Следующий запрос возвращает перечень всех семей, которые не зарегистрированы и живут в штате Нью-Йорк.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

Результаты не будут выведены, так как у семей в документе не больше двоих детей.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:

  • научились выполнять запросы с помощью API Cosmos DB для MongoDB.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.