Wykonywanie zapytań o dokumenty
W kolekcji można wykonywać zapytania dotyczące dowolnych dokumentów JSON, wykonując wpis względem zasobu "colls" w usłudze Cosmos DB. Składnia sql usługi Cosmos DB udostępnia operatory zapytań hierarchicznych, relacyjnych i przestrzennych do wykonywania zapytań i dokumentów projektu. Aby uzyskać więcej informacji na temat wykonywania zapytań dotyczących zasobów w usłudze Cosmos DB, zobacz wykonywanie zapytań dotyczących zasobów.
Żądanie
Metoda | Identyfikator URI żądania | Opis |
---|---|---|
Post | https://{databaseaccount}.documents.azure.com/dbs/{db-id}/colls/{coll-id}/docs | Pamiętaj, że {databaseaccount} jest nazwą konta usługi Cosmos DB utworzonego w ramach subskrypcji. wartość {db-id} to wygenerowana przez użytkownika nazwa/identyfikator bazy danych, a nie identyfikator wygenerowany przez system (rid). wartość {coll-id} jest nazwą kolekcji. |
Nagłówki
Zobacz Typowe nagłówki żądań REST usługi Azure Cosmos DB dla nagłówków , które są używane przez wszystkie żądania usługi Cosmos DB.
Nagłówek | Wymagany | Typ | Opis |
---|---|---|---|
x-ms-documentdb-isquery | Wymagane | Wartość logiczna | Musi mieć ustawioną wartość True wskazującą, że post jest zapytaniem. |
Typ zawartości | Wymagane | Ciąg | Ciąg, który musi być ustawiony na wartość application/query+json. |
x-ms-max-item-count | Opcjonalne | Liczba | Liczba całkowita wskazująca maksymalną liczbę elementów do zwrócenia na stronę. Zapytania będą zwracać nie więcej niż określoną liczbę elementów na stronę, ale mogą być mniejsze w zależności od warstwy wydajności kolekcji i ich rozmiarów. Można określić wartość x-ms-max-item-count z -1, aby umożliwić usłudze określenie optymalnej liczby elementów. Jest to zalecana wartość konfiguracji dla x-ms-max-item-count. |
x-ms-continuation | Opcjonalne | Ciąg | Token ciągu zwracany dla zapytań i operacji źródła danych odczytu, jeśli jest więcej wyników do odczytania. Klienci mogą pobrać następną stronę wyników, ponownie przesyłając żądanie z nagłówkiem żądania x-ms-continuation ustawionym na tę wartość. |
x-ms-documentdb-query-enablecrosspartition | Opcjonalne | Wartość logiczna | Jeśli kolekcja jest podzielona na partycje, musi to być ustawione na wartość True, aby zezwolić na wykonywanie w wielu partycjach. Zapytania filtrujące względem pojedynczego klucza partycji lub kolekcji z jedną partycją nie muszą ustawiać nagłówka. |
x-ms-consistency-level | Opcjonalne | Ciąg | Jest to przesłonięcia na poziomie spójności. Prawidłowe wartości to: Silna, Powiązana, Sesja lub Ostateczna (w kolejności od najsilniejszych do najsłabszych). Przesłonięcia muszą być takie same lub słabsze niż skonfigurowany poziom spójności konta. |
x-ms-session-token | Opcjonalne | Ciąg | Token ciągu używany ze spójnością na poziomie sesji. Klienci muszą powtórzyć najnowszą wartość odczytu tego nagłówka podczas żądań odczytu w celu zapewnienia spójności sesji. |
Ważne
Dla nagłówka Content-Type
NIE dołączaj zestawu znaków (tj. "application/query+json; charset-utf-8"). Nagłówek musi być dokładnie taki, jak pokazano powyżej.
Treść
Właściwość | Wymagany | Typ | Opis |
---|---|---|---|
Kwerendy | Wymagane | Ciąg | Zawiera tekst zapytania SQL. Aby uzyskać informacje na temat gramatyki, zobacz Gramatyka SQL. |
parameters | Wymagane | Tablica | Tablica wartości parametrów dla zapytania. |
{
"query": "SELECT * FROM Families f WHERE f.id = @id AND f.Address.City = @city",
"parameters": [
{
"name": "@id",
"value": "AndersenFamily"
},
{
"name": "@city",
"value": "Seattle"
}
]
}
Reakcja
Zwraca tablicę dokumentów pasujących do żądanego zapytania.
Nagłówki
Zobacz Typowe nagłówki odpowiedzi REST usługi Azure Cosmos DB dla nagłówków zwracanych przez wszystkie odpowiedzi usługi Cosmos DB. Ważne nagłówki odpowiedzi to:
Właściwość | Typ | Opis |
---|---|---|
x-ms-continuation | Ciąg | Zwraca token, aby pobrać więcej wyników z operacji. Klient może ponownie przesłać żądanie za pomocą nagłówka żądania x-ms-continuation zawierającego tę wartość, aby wznowić wykonywanie. |
x-ms-request-charge | Liczba | Liczba jednostek żądań używanych przez operację. |
Kody stanu
W poniższej tabeli wymieniono typowe kody stanu zwracane przez tę operację. Aby uzyskać pełną listę kodów stanu, zobacz Kody stanu HTTP.
Kod stanu HTTP | Opis |
---|---|
200 OK | Operacja zakończyła się pomyślnie. |
400 Nieprawidłowe żądanie | Określone żądanie zostało określone z nieprawidłową składnią SQL lub brakuje wymaganych nagłówków. |
Treść
Właściwość | Opis |
---|---|
_Rid | Jest to system wygenerowany identyfikator zasobu dla kolekcji, w której znajdują się dokumenty. |
_Liczba | Jest to liczba dokumentów zwracanych przez operację listy. |
Dokumenty | Tablica dokumentów zwróconych przez operację. |
Właściwości dokumentu
Właściwość | Opis |
---|---|
id | Jest to unikatowa nazwa, która identyfikuje dokument, tj. żadne dwa dokumenty nie mogą współdzielić tego samego identyfikatora. Identyfikator nie może przekraczać 255 znaków. |
<custom> | Dowolny kod JSON zdefiniowany przez użytkownika. |
_Rid | Jest to właściwość wygenerowana przez system. Identyfikator zasobu (_rid) to unikatowy identyfikator, który jest również hierarchiczny dla stosu zasobów w modelu zasobów. Jest on używany wewnętrznie do umieszczania zasobu dokumentu i nawigacji po nim. |
_Ts | Jest to właściwość wygenerowana przez system. Określa ostatni zaktualizowany znacznik czasu zasobu. Wartość jest znacznikiem czasu. |
_Własny | Jest to właściwość wygenerowana przez system. Jest to unikatowy adresowy identyfikator URI zasobu. |
_Etag | Jest to właściwość wygenerowana przez system, która określa tag zasobu wymagany do optymistycznej kontroli współbieżności. |
_Załączniki | Jest to właściwość wygenerowana przez system, która określa ścieżkę adresową zasobu załączników. |
{
"_rid": "1KtjAImkcgw=",
"Documents": [
{
"id": "AndersenFamily",
"LastName": "Andersen",
"Parents": [
{
"FamilyName": null,
"FirstName": "Thomas"
},
{
"FamilyName": null,
"FirstName": "Mary Kay"
}
],
"Children": [
{
"FamilyName": null,
"FirstName": "Henriette Thaulow",
"Gender": "female",
"Grade": 5,
"Pets": [
{
"GivenName": "Fluffy"
}
]
}
],
"Address": {
"State": "WA",
"County": "King",
"City": "Seattle"
},
"IsRegistered": true,
"_rid": "1KtjAImkcgwBAAAAAAAAAA==",
"_self": "dbs/1KtjAA==/colls/1KtjAImkcgw=/docs/1KtjAImkcgwBAAAAAAAAAA==/",
"_etag": "\"00003200-0000-0000-0000-56f9e84d0000\"",
"_ts": 1459218509,
"_attachments": "attachments/"
}
],
"_count": 1
}
Przykład
POST https://querydemo.documents.azure.com/dbs/1KtjAA==/colls/1KtjAImkcgw=/docs HTTP/1.1
x-ms-continuation:
x-ms-documentdb-isquery: True
x-ms-documentdb-query-enablecrosspartition: True
x-ms-date: Tue, 29 Mar 2016 02:28:32 GMT
authorization: type%3dmaster%26ver%3d1.0%26sig%3drOlOhFh9plfC0ggZfmHtS3XepVitiIRsd6i1d9PnuW8%3d
Cache-Control: no-cache
User-Agent: Microsoft.Azure.Documents.Client/1.6.0.0
x-ms-version: 2015-12-16
Accept: application/json
Content-Type: application/query+json
Host: querydemo.documents.azure.com
Cookie: x-ms-session-token#0=604; x-ms-session-token=604
Content-Length: 170
Expect: 100-continue
{
"query": "SELECT * FROM Families f WHERE f.id = @id AND f.Address.City = @city",
"parameters": [
{
"name": "@id",
"value": "AndersenFamily"
},
{
"name": "@city",
"value": "Seattle"
}
]
}
HTTP/1.1 201 Created
Cache-Control: no-store, no-cache
Pragma: no-cache
Transfer-Encoding: chunked
Content-Type: application/json
Server: Microsoft-HTTPAPI/2.0
Strict-Transport-Security: max-age=31536000
x-ms-last-state-change-utc: Fri, 25 Mar 2016 22:39:02.501 GMT
etag: "00003200-0000-0000-0000-56f9e84d0000"
x-ms-resource-quota: documentSize=10240;documentsSize=10485760;collectionSize=10485760;
x-ms-resource-usage: documentSize=0;documentsSize=1;collectionSize=1;
x-ms-schemaversion: 1.1
x-ms-alt-content-path: dbs/testdb/colls/testcoll
x-ms-quorum-acked-lsn: 602
x-ms-current-write-quorum: 3
x-ms-current-replica-set-size: 4
x-ms-request-charge: 12.38
x-ms-serviceversion: version=1.6.52.5
x-ms-activity-id: 856acd38-320d-47df-ab6f-9761bb987668
x-ms-session-token: 0:603
Set-Cookie: x-ms-session-token#0=603; Domain=querydemo.documents.azure.com; Path=/dbs/1KtjAA==/colls/1KtjAImkcgw=
Set-Cookie: x-ms-session-token=603; Domain=querydemo.documents.azure.com; Path=/dbs/1KtjAA==/colls/1KtjAImkcgw=
x-ms-gatewayversion: version=1.6.52.5
Date: Tue, 29 Mar 2016 02:28:30 GMT
{
"id": "AndersenFamily",
"LastName": "Andersen",
"Parents": [
{
"FamilyName": null,
"FirstName": "Thomas"
},
{
"FamilyName": null,
"FirstName": "Mary Kay"
}
],
"Children": [
{
"FamilyName": null,
"FirstName": "Henriette Thaulow",
"Gender": "female",
"Grade": 5,
"Pets": [
{
"GivenName": "Fluffy"
}
]
}
],
"Address": {
"State": "WA",
"County": "King",
"City": "Seattle"
},
"IsRegistered": true,
"_rid": "1KtjAImkcgwBAAAAAAAAAA==",
"_self": "dbs/1KtjAA==/colls/1KtjAImkcgw=/docs/1KtjAImkcgwBAAAAAAAAAA==/",
"_etag": "\"00003200-0000-0000-0000-56f9e84d0000\"",
"_ts": 1459218509,
"_attachments": "attachments/"
}