Zelfstudie: Query's uitvoeren in Azure Cosmos DB met behulp van de tabel-APITutorial: Query Azure Cosmos DB by using the Table API

De tabel-API van Azure Cosmos DB ondersteunt de uitvoering van OData- en LINQ-query's op gegevens van de sleutelwaarde (tabel).The Azure Cosmos DB Table API supports OData and LINQ queries against key/value (table) data.

Dit artikel behandelt de volgende taken:This article covers the following tasks:

  • Gegevens opvragen met de tabel-APIQuerying data with the Table API

In de query's in dit artikel wordt de volgende voorbeeldtabel People gebruikt:The queries in this article use the following sample People table:

PartitionKeyPartitionKey RowKeyRowKey E-mailEmail PhoneNumberPhoneNumber
HarpHarp WalterWalter Walter@contoso.com 425-555-0101425-555-0101
SmithSmith BenBen Ben@contoso.com 425-555-0102425-555-0102
SmithSmith JeffJeff Jeff@contoso.com 425-555-0104425-555-0104

Zie Querying Tables and Entities (Tabellen en entiteiten opvragen) voor meer informatie over het uitvoeren van query's met behulp van de tabel-API.See Querying Tables and Entities for details on how to query by using the Table API.

Meer informatie over de premium-mogelijkheden van Azure Cosmos DB vindt u in De tabel-API van Azure Cosmos DB en Ontwikkelen met de tabel-API in .NET.For more information on the premium capabilities that Azure Cosmos DB offers, see Azure Cosmos DB Table API and Develop with the Table API in .NET.

VereistenPrerequisites

Deze query's werken alleen als u een Azure DB Cosmos DB-account hebt en een container met entiteitsgegevens.For these queries to work, you must have an Azure Cosmos DB account and have entity data in the container. Hebt u geen van beide?Don't have any of those? Voltooi de Quickstart van 5 minuten of de zelfstudie voor ontwikkelaars om een account te maken en uw database te vullen.Complete the five-minute quickstart or the developer tutorial to create an account and populate your database.

Query op PartitionKey en RowKeyQuery on PartitionKey and RowKey

Omdat de eigenschappen PartitionKey en RowKey de primaire sleutel van een entiteit vormen, kunt u de volgende specifieke syntaxis gebruiken voor het identificeren van de entiteit:Because the PartitionKey and RowKey properties form an entity's primary key, you can use the following special syntax to identify the entity:

Query’s uitvoerenQuery

https://<mytableendpoint>/People(PartitionKey='Harp',RowKey='Walter')  

ResultatenResults

PartitionKeyPartitionKey RowKeyRowKey E-mailEmail PhoneNumberPhoneNumber
HarpHarp WalterWalter Walter@contoso.com 425-555-0104425-555-0104

U kunt deze eigenschappen ook opgeven als onderdeel van de optie $filter, zoals wordt weergegeven in de volgende sectie.Alternatively, you can specify these properties as part of the $filter option, as shown in the following section. Houd er rekening mee dat de namen van sleuteleigenschappen en constante waarden hoofdlettergevoelig zijn.Note that the key property names and constant values are case-sensitive. De eigenschappen PartitionKey en RowKey zijn van het type String.Both the PartitionKey and RowKey properties are of type String.

Query's uitvoeren met behulp van een OData-filterQuery by using an OData filter

Houd bij het samenstellen van een filtertekenreeks rekening met deze regels:When you're constructing a filter string, keep these rules in mind:

  • Gebruik de logische operators die door de specificatie van het OData-protocol zijn gedefinieerd om een eigenschap te vergelijken met een waarde.Use the logical operators defined by the OData Protocol Specification to compare a property to a value. U kunt een eigenschap niet vergelijken met een dynamische waarde.Note that you can't compare a property to a dynamic value. Eén kant van de expressie moet een constante zijn.One side of the expression must be a constant.
  • De eigenschapsnaam, operator en constante waarde moeten worden gescheiden door in URL gecodeerde spaties.The property name, operator, and constant value must be separated by URL-encoded spaces. Een spatie wordt in URL gecodeerd als %20.A space is URL-encoded as %20.
  • Alle onderdelen van de filtertekenreeks zijn hoofdlettergevoelig.All parts of the filter string are case-sensitive.
  • Het filter retourneert alleen geldige resultaten als de constante waarde van hetzelfde gegevenstype is als de eigenschap.The constant value must be of the same data type as the property in order for the filter to return valid results. Zie Understanding the Table Service Data Model (Het gegevensmodel van de tabelservice) voor meer informatie over ondersteunde eigenschapstypen.For more information about supported property types, see Understanding the Table Service Data Model.

Hier volgt een voorbeeldquery die laat zien hoe u de eigenschappen PartitionKey en Email filtert met behulp van een OData-$filter.Here's an example query that shows how to filter by the PartitionKey and Email properties by using an OData $filter.

Query’s uitvoerenQuery

https://<mytableapi-endpoint>/People()?$filter=PartitionKey%20eq%20'Smith'%20and%20Email%20eq%20'Ben@contoso.com'

Zie Querying Tables and Entities (Tabellen en entiteiten opvragen) voor meer informatie over het samenstellen van filterexpressies voor verschillende soorten gegevens.For more information on how to construct filter expressions for various data types, see Querying Tables and Entities.

ResultatenResults

PartitionKeyPartitionKey RowKeyRowKey E-mailEmail PhoneNumberPhoneNumber
SmithSmith BenBen Ben@contoso.com 425-555-0102425-555-0102

Query’s uitvoeren met LINQQuery by using LINQ

U kunt ook query's uitvoeren met behulp van LINQ, die deze vertaalt naar de bijbehorende OData-query-expressies.You can also query by using LINQ, which translates to the corresponding OData query expressions. Hier volgt een voorbeeld van hoe u query's opbouwt met behulp van de .NET-SDK:Here's an example of how to build queries by using the .NET SDK:

IQueryable<CustomerEntity> linqQuery = table.CreateQuery<CustomerEntity>()
            .Where(x => x.PartitionKey == "4")
            .Select(x => new CustomerEntity() { PartitionKey = x.PartitionKey, RowKey = x.RowKey, Email = x.Email });

Volgende stappenNext steps

In deze zelfstudie hebt u het volgende gedaan:In this tutorial, you've done the following:

  • U hebt geleerd hoe u een query maakt met behulp van de tabel-APILearned how to query by using the Table API

U kunt nu doorgaan met de volgende zelfstudie, waarin u leert hoe u uw gegevens globaal distribueert.You can now proceed to the next tutorial to learn how to distribute your data globally.