Ottenere i documenti

Per elencare tutti i documenti di un database, inviare una GET richiesta a https://$ACCOUNT.cloudant.com/$DATABASE/_all_docs.

L'endpoint _all_docs accetta le seguenti stringhe di query e gli argomenti del corpo JSON:

Stringa di query e argomenti del corpo JSON
Argomento Descrizione Facoltativo Immettere Valore predefinito
conflicts Può essere impostato solo se include_docs è true. Aggiunge informazioni sui conflitti a ciascun documento. Booleano False
deleted_conflicts Restituisce informazioni sulle revisioni in conflitto eliminate. Booleano False
descending Restituisce i documenti in ordine decrescente di chiave. Booleano False
endkey Smette di restituire i record quando viene raggiunta la chiave specificata. Stringa
endkey_docid Interrompe la restituzione dei record quando viene raggiunto l'ID documento specificato. Se endkey non è impostato, questo argomento viene ignorato. Stringa
include_docs Includere il contenuto completo dei documenti nella dichiarazione. Booleano False
inclusive_end Include le righe la cui chiave è uguale al valore endkey". Booleano Vero
key Restituisce solo i documenti con ID che corrispondono alla chiave specificata. Stringa
keys Restituisce solo i documenti con ID che corrispondono a una delle chiavi specificate. Elenco di stringhe
limit Limita il numero di documenti restituiti al numero specificato. Numerico
meta Combinazione abbreviata dei tre argomenti seguenti: conflicts, deleted_conflicts, e revs_info. L'uso di meta=true è uguale all'uso di conflicts=true&deleted_conflicts=true&revs_info=true. Booleano False
r Specificare il valore del quorum di lettura. Numerico 2
revs_info Include informazioni dettagliate su tutte le revisioni note del documento. Booleano False
skip Salta questo numero di record prima di restituire i risultati. Numerico 0
startkey Restituisce i record a partire dalla chiave specificata. Stringa
startkey_docid Restituisce i record a partire dall'ID documento specificato. Se startkey non è impostato, questo argomento viene ignorato. Stringa

Qual è l'endpoint di _all_docs ?

Le operazioni GET e POST $SERVICE_URL/$DATABASE/_all_docs recuperano i dati dall' indice primario di un database IBM Cloudant, cioè l'indice che mantiene l'ordine di ogni documento _id. L'endpoint _all_docs accetta una serie di parametri opzionali che configurano l'intervallo di dati richiesti e se restituire o meno il corpo di ciascun documento. Senza parametri, _all_docs invia in streaming tutti i documenti di un database, restituendo solo il documento _id e il suo token _rev corrente.

Paginazione

Utilizzare l'impaginazione a chiave per tutti i documenti. Per dettagli ed esempi specifici, consultare l'argomento della documentazione API Paginazione su tutti i documenti.

Note

  1. L'uso di include_docs=true potrebbe avere implicazioni sulle prestazioni.

  2. Quando si usa l'argomento keys, potrebbe essere più semplice inviare una richiesta POST anziché una richiesta GET, se si ha bisogno di più stringhe per elencare le chiavi desiderate.

  3. Quando si usa l'argomento keys e la revisione viene cancellata, l'attributo value restituito è un oggetto JSON con l'attuale _rev del documento e un _deleted attributo. L'attributo doc viene popolato solo se specificato include_docs=true nella richiesta e null se il documento viene cancellato.

Si veda il seguente esempio che utilizza HTTP per elencare tutti i documenti di un database:

GET /_all_docs HTTP/1.1

Vedere l'esempio seguente per elencare tutti i documenti di un database:

curl -H "Authorization: Bearer $API_BEARER_TOKEN" -X POST "$SERVICE_URL/orders/_all_docs" -H "Content-Type: application/json" --data '{ "include_docs": true, "startkey": "abc", "limit": 10}'
import com.ibm.cloud.cloudant.v1.Cloudant;
import com.ibm.cloud.cloudant.v1.model.AllDocsResult;
import com.ibm.cloud.cloudant.v1.model.PostAllDocsOptions;
Cloudant service = Cloudant.newInstance();
PostAllDocsOptions docsOptions =
    new PostAllDocsOptions.Builder()
        .db("orders")
        .includeDocs(true)
        .startKey("abc")
        .limit(10)
        .build();
AllDocsResult response =
    service.postAllDocs(docsOptions).execute().getResult();
System.out.println(response);
const { CloudantV1 } = require('@ibm-cloud/cloudant');
const service = CloudantV1.newInstance({});
service.postAllDocs({
  db: 'orders',
  includeDocs: true,
  startKey: 'abc',
  limit: 10
}).then(response => {
  console.log(response.result);
});
from ibmcloudant.cloudant_v1 import CloudantV1
service = CloudantV1.new_instance()
response = service.post_all_docs(
  db='orders',
  include_docs=True,
  start_key='abc',
  limit=10
).get_result()
print(response)
postAllDocsOptions := service.NewPostAllDocsOptions(
  "orders",
)
postAllDocsOptions.SetIncludeDocs(true)
postAllDocsOptions.SetStartKey("abc")
postAllDocsOptions.SetLimit(10)
allDocsResult, response, err := service.PostAllDocs(postAllDocsOptions)
if err != nil {
  panic(err)
}
b, _ := json.MarshalIndent(allDocsResult, "", "  ")
fmt.Println(string(b))

Il precedente esempio di Go richiede il seguente blocco di importazione:

import (
   "encoding/json"
   "fmt"
   "github.com/IBM/cloudant-go-sdk/cloudantv1"
)

Tutti gli esempi Go richiedono l'iniziazione dell'oggetto service. Per ulteriori informazioni, consultare la sezione Autenticazione della documentazione API per gli esempi.

Si veda il seguente esempio che utilizza HTTP per elencare tutti i documenti di un database che corrispondono ad almeno una delle chiavi specificate:

GET /_all_docs?keys=["somekey","someotherkey"] HTTP/1.1

Vedere l'esempio seguente per elencare tutti i documenti di un database che corrispondono ad almeno una delle chiavi specificate:

curl -H "Authorization: Bearer $API_BEARER_TOKEN" -X POST "$SERVICE_URL/orders/_all_docs" -H "Content-Type: application/json" --data '{
  "include_docs": true,
  "keys": ["somekey", "someotherkey"],
  "limit": 10
}'
import com.ibm.cloud.cloudant.v1.Cloudant;
import com.ibm.cloud.cloudant.v1.model.AllDocsResult;
import com.ibm.cloud.cloudant.v1.model.PostAllDocsOptions;
import java.util.Arrays;
Cloudant service = Cloudant.newInstance();
PostAllDocsOptions docsOptions =
    new PostAllDocsOptions.Builder()
        .db("orders")
        .includeDocs(true)
        .keys(Arrays.asList("somekey", "someotherkey"))
        .limit(10)
        .build();
AllDocsResult response =
    service.postAllDocs(docsOptions).execute().getResult();
System.out.println(response);
const { CloudantV1 } = require('@ibm-cloud/cloudant');
const service = CloudantV1.newInstance({});
service.postAllDocs({
  db: 'orders',
  includeDocs: true,
  keys: ['somekey', 'someotherkey'],
  limit: 10
}).then(response => {
  console.log(response.result);
});
from ibmcloudant.cloudant_v1 import CloudantV1
service = CloudantV1.new_instance()
response = service.post_all_docs(
  db='orders',
  include_docs=True,
  keys=['somekey', 'someotherkey'],
  limit=10
).get_result()
print(response)
postAllDocsOptions := service.NewPostAllDocsOptions(
		"orders",
	)
	postAllDocsOptions.SetIncludeDocs(true)
	postAllDocsOptions.SetKeys([]string{"somekey", "someotherkey"})
	postAllDocsOptions.SetLimit(10)
	
	allDocsResult, response, err := service.PostAllDocs(postAllDocsOptions)
	if err != nil {
		panic(err)
	}
	
	b, _ := json.MarshalIndent(allDocsResult, "", "  ")
	fmt.Println(string(b))

Il precedente esempio di Go richiede il seguente blocco di importazione:

import (
   "encoding/json"
   "fmt"
   "github.com/IBM/cloudant-go-sdk/cloudantv1"
)

Tutti gli esempi Go richiedono l'iniziazione dell'oggetto service. Per ulteriori informazioni, consultare la sezione Autenticazione della documentazione API per gli esempi.

La risposta è un oggetto JSON che contiene tutti i documenti del database che corrispondono ai parametri. La tabella seguente descrive il significato dei singoli campi:

Campi dell'oggetto JSON
Campo Descrizione Immettere
offset Offset dell'inizio dell'elenco dei documenti. Numeric, Null (il tipo può essere null quando keys sono specificati)
rows Array di oggetti documento. Array
total_rows Numero di documenti nel database o nella vista che corrispondono ai parametri della query. Numerico
pdate_seq Sequenza di aggiornamento corrente per il database. Stringa

Si veda il seguente esempio di risposta dopo una richiesta di tutti i documenti di un database:

{
	"total_rows": 3,
	"offset": 0,
	"rows": [
		{
			"id": "5a049246-179f-42ad-87ac-8f080426c17c",
			"key": "5a049246-179f-42ad-87ac-8f080426c17c",
			"value": {
				"rev": "2-9d5401898196997853b5ac4163857a29"
			}
		},
		{
			"id": "96f898f0-f6ff-4a9b-aac4-503992f31b01",
			"key": "96f898f0-f6ff-4a9b-aac4-503992f31b01",
			"value": {
				"rev": "2-ff7b85665c4c297838963c80ecf481a3"
			}
		},
		{
			"id": "d1f61e66-7708-4da6-aa05-7cbc33b44b7e",
			"key": "d1f61e66-7708-4da6-aa05-7cbc33b44b7e",
			"value": {
				"rev": "2-cbdef49ef3ddc127eff86350844a6108"
			}
		}
	]
}