Samouczek: wykonywanie zapytań w usłudze Azure Cosmos DB przy użyciu interfejsu API dla tabeli
DOTYCZY: Stół
Usługa Azure Cosmos DB dla tabeli obsługuje zapytania OData i LINQ względem danych klucza/wartości (tabeli).
W tym artykule opisano następujące zadania:
- Wykonywanie zapytań dotyczących danych za pomocą interfejsu API dla tabeli
Zapytania w tym artykule korzystają z następującej przykładowej tabeli People
:
PartitionKey | RowKey | PhoneNumber | |
---|---|---|---|
Harp | Walter | Walter@contoso.com | 425-555-0101 |
Smith | Ben | Ben@contoso.com | 425-555-0102 |
Smith | Jeff | Jeff@contoso.com | 425-555-0104 |
Aby uzyskać szczegółowe informacje na temat wykonywania zapytań przy użyciu interfejsu API dla tabeli, zobacz Wykonywanie zapytań dotyczących tabel i jednostek.
Wymagania wstępne
Aby te zapytania działały, musisz mieć konto usługi Azure Cosmos DB i mieć dane jednostki w kontenerze. Jeśli nie masz konta lub danych, ukończ przewodnik Szybki start: Usługa Azure Cosmos DB dla tabeli dla platformy .NET , aby utworzyć konto i wypełnić bazę danych.
Zapytanie dotyczące właściwości PartitionKey i RowKey
Ponieważ właściwości PartitionKey i RowKey tworzą klucz podstawowy jednostki, do zidentyfikowania jednostki można użyć następującej specjalnej składni:
Zapytanie
https://<mytableendpoint>/People(PartitionKey='Harp',RowKey='Walter')
Wyniki
PartitionKey | RowKey | PhoneNumber | |
---|---|---|---|
Harp | Walter | Walter@contoso.com | 425-555-0104 |
Można także określić te właściwości jako część opcji $filter
, jak pokazano w poniższej sekcji. W nazwach właściwości klucza i wartościach stałych uwzględniana jest wielkość liter. Właściwości PartitionKey i RowKey są typu Ciąg.
Wykonywanie zapytań przy użyciu filtru OData
Podczas tworzenia ciągu filtru należy pamiętać o następujących regułach:
- Aby porównać właściwość z wartością, użyj operatorów logicznych określonych w specyfikacji protokołu OData. Nie można porównać właściwości z wartością dynamiczną. Jedna strona wyrażenia musi być stałą.
- Spacje zakodowane w adresie URL muszą oddzielić nazwę właściwości, operator i wartość stałą. Spacja jest zakodowana w adresie URL jako
%20
. - We wszystkich częściach ciągu filtru jest rozróżniana wielkość liter.
- Wartość stała musi mieć ten sam typ danych co właściwość, aby filtr zwracał prawidłowe wyniki. Aby uzyskać więcej informacji na temat obsługiwanych typów właściwości, zobacz Omówienie modelu danych usługi Table Service.
Poniżej przedstawiono przykładowe zapytanie, które pokazuje sposób filtrowania według właściwości PartitionKey i Email przy użyciu elementu $filter
OData.
Zapytanie
https://<mytableapi-endpoint>/People()?$filter=PartitionKey%20eq%20'Smith'%20and%20Email%20eq%20'Ben@contoso.com'
Aby uzyskać więcej informacji na temat sposobu tworzenia wyrażenia filtru dla różnych typów danych, zobacz Wykonywanie zapytań względem tabel i jednostek.
Wyniki
PartitionKey | RowKey | PhoneNumber | |
---|---|---|---|
Smith | Ben | Ben@contoso.com | 425-555-0102 |
Zapytania we właściwościach daty/godziny nie zwracają żadnych danych wykonywanych w interfejsie API usługi Azure Cosmos DB dla tabeli. Podczas gdy usługa Azure Table Storage przechowuje wartości dat z stopniem szczegółowości czasu, interfejs API dla tabeli w usłudze Azure Cosmos DB używa _ts
właściwości . Właściwość _ts
jest na drugim poziomie szczegółowości, który nie jest filtrem OData. Usługa Azure Cosmos DB blokuje zapytania we właściwościach znacznika czasu. Aby obejść ten problem, można zdefiniować niestandardową właściwość typu daty/godziny lub długiego typu danych i ustawić wartość daty od klienta.
Wykonywanie zapytań za pomocą wyrażenia LINQ
Możesz także wykonywać zapytania za pomocą wyrażenia LINQ, co oznacza odpowiednie wyrażenia zapytań OData. Oto przykład sposobu tworzenia zapytań przy użyciu zestawu .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 });
Następne kroki
Możesz teraz przejść do następnego samouczka, aby dowiedzieć się, jak dystrybuować swoje dane globalnie.