Tutorial: Abfragen von Azure Cosmos BD mithilfe der Tabellen-APITutorial: Query Azure Cosmos DB by using the Table API

Die Table-API von Azure Cosmos DB unterstützt OData- und LINQ-Abfragen von Schlüssel-/Wertdaten (Tabellendaten).The Azure Cosmos DB Table API supports OData and LINQ queries against key/value (table) data.

In diesem Artikel werden die folgenden Aufgaben behandelt:This article covers the following tasks:

  • Abfragen von Daten mit der Tabellen-APIQuerying data with the Table API

Die Abfragen in diesem Artikel verwenden die folgende Beispieltabelle People: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

Weitere Informationen zu Abfragen mit der Tabellen-API finden Sie unter Abfragen von Tabellen und Entitäten.See Querying Tables and Entities for details on how to query by using the Table API.

Weitere Informationen zu den Premiumfunktionen von Azure Cosmos DB finden Sie unter Einführung in die Tabellen-API von Azure Cosmos DB sowie unter Azure Cosmos DB: Entwickeln mit der Tabellen-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.

VoraussetzungenPrerequisites

Diese Abfragen können nur funktionieren, wenn Sie über ein Azure Cosmos DB-Konto verfügen und Entitätsdaten im Container vorliegen.For these queries to work, you must have an Azure Cosmos DB account and have entity data in the container. Sie haben beides nicht?Don't have any of those? Absolvieren Sie den 5-Minuten-Schnellstart oder das Entwicklertutorial zum Erstellen eines Kontos und Auffüllen Ihrer Datenbank.Complete the five-minute quickstart or the developer tutorial to create an account and populate your database.

Abfragen nach PartitionKey und RowKeyQuery on PartitionKey and RowKey

Da die Eigenschaften PartitionKey und RowKey den Primärschlüssel einer Entität bilden, können Sie die folgende spezielle Syntax verwenden, um die Entität zu identifizieren:Because the PartitionKey and RowKey properties form an entity's primary key, you can use the following special syntax to identify the entity:

AbfrageQuery

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

ErgebnisseResults

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

Alternativ können Sie diese Eigenschaften als Teil der $filter-Option angeben, wie im folgenden Abschnitt gezeigt.Alternatively, you can specify these properties as part of the $filter option, as shown in the following section. Beachten Sie, dass bei den Schlüsseleigenschaftsnamen und Konstantenwerten die Groß-/Kleinschreibung berücksichtigt wird.Note that the key property names and constant values are case-sensitive. Die Eigenschaften PartitionKey und RowKey sind vom Typ Zeichenfolge.Both the PartitionKey and RowKey properties are of type String.

Abfragen mit einem OData-FilterQuery by using an OData filter

Wenn Sie eine Filterzeichenfolge erstellen, gelten diese Regeln:When you're constructing a filter string, keep these rules in mind:

  • Verwenden Sie die von der OData-Protokollspezifikation definierten logischen Operatoren, um eine Eigenschaft mit einem Wert zu vergleichen.Use the logical operators defined by the OData Protocol Specification to compare a property to a value. Beachten Sie, dass Sie eine Eigenschaft nicht mit einem dynamischen Wert vergleichen können.Note that you can't compare a property to a dynamic value. Eine Seite des Ausdrucks muss eine Konstante sein.One side of the expression must be a constant.
  • Eigenschaftenname, Operator und Konstantenwert müssen durch URL-codierte Leerzeichen getrennt werden.The property name, operator, and constant value must be separated by URL-encoded spaces. Ein Leerzeichen wird als %20 URL-codiert.A space is URL-encoded as %20.
  • Bei allen Teilen der Filterzeichenfolge ist die Groß-/Kleinschreibung zu beachten.All parts of the filter string are case-sensitive.
  • Der konstante Wert muss den gleichen Datentyp besitzen wie die Eigenschaft, damit vom Filter gültige Ergebnisse zurückgegeben werden.The constant value must be of the same data type as the property in order for the filter to return valid results. Weitere Informationen zu unterstützten Eigenschaftentypen finden Sie unter Grundlegendes zum Tabellenspeicherdienst-Datenmodell.For more information about supported property types, see Understanding the Table Service Data Model.

Diese Beispielabfrage zeigt das Filtern nach den Eigenschaften PartitionKey und Email unter Verwendung eines OData-$filter.Here's an example query that shows how to filter by the PartitionKey and Email properties by using an OData $filter.

AbfrageQuery

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

Weitere Informationen zum Erstellen von Filterausdrücken für verschiedene Datentypen finden Sie unter Querying Tables and Entities (Abfragen von Tabellen und Entitäten).For more information on how to construct filter expressions for various data types, see Querying Tables and Entities.

ErgebnisseResults

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

Abfragen mit LINQQuery by using LINQ

Sie können auch Abfragen mit LINQ durchführen, wobei die Übersetzung in die entsprechenden OData-Abfrageausdrücke erfolgt.You can also query by using LINQ, which translates to the corresponding OData query expressions. Dies ist ein Beispiel für das Erstellen von Abfragen mit dem .NET SDK.Here's an example of how to build queries by using the .NET SDK:

CloudTableClient tableClient = account.CreateCloudTableClient();
CloudTable table = tableClient.GetTableReference("People");

TableQuery<CustomerEntity> query = new TableQuery<CustomerEntity>()
    .Where(
        TableQuery.CombineFilters(
            TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, "Smith"),
            TableOperators.And,
            TableQuery.GenerateFilterCondition("Email", QueryComparisons.Equal,"Ben@contoso.com")
    ));

await table.ExecuteQuerySegmentedAsync<CustomerEntity>(query, null);

Nächste SchritteNext steps

In diesem Tutorial haben Sie die folgenden Aufgaben ausgeführt:In this tutorial, you've done the following:

  • Sie haben erfahren, wie Sie Abfragen mit der Table-API erstellen.Learned how to query by using the Table API

Sie können jetzt mit dem nächsten Tutorial fortfahren, um zu erfahren, wie Sie Ihre Daten global verteilen.You can now proceed to the next tutorial to learn how to distribute your data globally.