Eseguire query sui documenti
È possibile eseguire query su documenti json arbitrari in una raccolta eseguendo un post sulla risorsa "colls" in Cosmos DB. La sintassi sql di Cosmos DB fornisce operatori di query gerarchici, relazionali e spaziali per eseguire query e progetti. Per altre informazioni sull'esecuzione di query sulle risorse in Cosmos DB, vedere query sulle risorse.
Richiesta
Metodo | URI richiesta | Descrizione |
---|---|---|
post | https://{databaseaccount}.documents.azure.com/dbs/{db-id}/colls/{coll-id}/docs | si noti che {databaseaccount} è il nome dell'account Cosmos DB creato nella sottoscrizione. il valore {db-id} è il nome/id generato dall'utente del database, non l'ID generato dal sistema (rid). il valore {coll-id} è il nome della raccolta. |
Intestazioni
Vedere Intestazioni di richiesta REST di Azure Cosmos DB comuni per le intestazioni usate da tutte le richieste di Cosmos DB.
Intestazione | Obbligatoria | Tipo | Descrizione |
---|---|---|---|
x-ms-documentdb-isquery | Necessario | Boolean | Deve essere impostato su True che indica che post è una query. |
Content-Type | Necessario | string | Stringa che deve essere impostata su application/query+json. |
x-ms-max-item-count | Facoltativo | Number | Intero che indica il numero massimo di elementi da restituire per pagina. Le query restituiranno non più del numero specificato di elementi per pagina, ma potrebbero essere inferiori a seconda del livello di prestazioni della raccolta e delle relative dimensioni. È possibile specificare un numero x-ms-max-item-count di -1 per consentire al servizio di determinare il conteggio ottimale degli elementi. È il valore di configurazione consigliato per x-ms-max-item-count. |
x-ms-continuation | Facoltativo | String | Un token di stringa restituito per le query e le operazioni di lettura-feed se sono presenti altri risultati da leggere. I client possono recuperare la pagina successiva dei risultati inviando nuovamente la richiesta con l'intestazione della richiesta x-ms-continuazione impostata su questo valore. |
x-ms-documentdb-query-enablecrosspartition | Facoltativo | Boolean | Se la raccolta è partizionata, questa operazione deve essere impostata su True per consentire l'esecuzione tra più partizioni. Le query che filtrano su una singola chiave di partizione o su raccolte partizionate singole non devono impostare l'intestazione. |
x-ms-consistency-level | Facoltativo | String | Questo è l'override del livello di coerenza. I valori validi sono: Strong, Bounded, Session o Eventual (in ordine di più forte a più debole). L'override deve essere uguale o più debole del livello di coerenza configurato dell'account. |
x-ms-session-token | Facoltativo | String | Token stringa usato con coerenza a livello di sessione. I client devono eco del valore di lettura più recente di questa intestazione durante le richieste di lettura per la coerenza della sessione. |
Importante
Per l'intestazione non includere il Content-Type
charset (ad esempio "application/query+json; charset-utf-8"). L'intestazione deve essere esattamente come illustrato sopra.
Corpo
Proprietà | Obbligatoria | Tipo | Descrizione |
---|---|---|---|
query | Necessario | string | Contiene il testo della query SQL. Per la grammatica, vedere Grammatica SQL. |
parameters | Necessario | Array | Matrice di valori dei parametri per la query. |
{
"query": "SELECT * FROM Families f WHERE f.id = @id AND f.Address.City = @city",
"parameters": [
{
"name": "@id",
"value": "AndersenFamily"
},
{
"name": "@city",
"value": "Seattle"
}
]
}
Risposta
Restituisce una matrice di documenti che corrispondono alla query richiesta.
Intestazioni
Vedere Intestazioni di risposta REST di Azure Cosmos DB comuni per le intestazioni restituite da tutte le risposte di Cosmos DB. Le intestazioni di risposta importanti sono:
Proprietà | Type | Descrizione |
---|---|---|
x-ms-continuation | string | Restituisce un token per recuperare altri risultati dall'operazione. Il client può inviare nuovamente la richiesta con l'intestazione della richiesta x-ms-continuazione contenente questo valore per riprendere l'esecuzione. |
x-ms-request-charge | Number | Numero di unità di richiesta usate dall'operazione. |
Codici di stato
La seguente tabella elenca i codici di stato comuni restituiti da questa operazione. Per un elenco completo dei codici di stato, vedere Codici di stato HTTP.
Codice di stato HTTP | Descrizione |
---|---|
200 - OK | L'operazione è stata completata. |
400 - Richiesta non valida | Nella richiesta specificata è stata usata una sintassi SQL non corretta o mancano intestazioni obbligatorie. |
Corpo
Proprietà | Descrizione |
---|---|
_liberarsi | ID della risorsa generato dal sistema per la raccolta in cui si trova il documento. |
_Conteggio | Numero di documenti restituiti dall'operazione List. |
Documents (Documenti) | Matrice di documenti restituiti dall'operazione. |
Proprietà del documento
Proprietà | Descrizione |
---|---|
id | Si tratta del nome univoco che identifica il documento, ovvero nessun documento può condividere lo stesso ID. L'ID non deve superare i 255 caratteri. |
<custom> | Qualsiasi JSON definito dall'utente. |
_rid | Si tratta di una proprietà generata dal sistema. L'ID risorsa (_rid) è un identificatore univoco gerarchico anche per ogni stack di risorse nel modello di risorse. Viene usato internamente per il posizionamento e l'esplorazione della risorsa documento. |
_Ts | Proprietà generata dal sistema. Indica il timestamp dell'ultimo aggiornamento della risorsa. Il valore è un timestamp. |
_stesso | Proprietà generata dal sistema. URI indirizzabile univoco per la risorsa. |
_Etag | Si tratta di una proprietà generata dal sistema che specifica l'etag della risorsa necessaria per il controllo della concorrenza ottimistica. |
_Allegati | Proprietà generata dal sistema che specifica il percorso indirizzabile della risorsa degli allegati. |
{
"_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
}
Esempio
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/"
}