Obtention de documents

Pour répertorier tous les documents d'une base de données, envoyez une demande GET à https://$ACCOUNT.cloudant.com/$DATABASE/_all_docs.

Le noeud final _all_docs accepte les arguments de chaîne de requête et de corps JSON suivants :

Arguments de la chaîne de requête et du corps JSON
Argument Description Facultatif Type Valeur par défaut
conflicts Ne peut être défini que si include_docs a pour valeur true. Ajoute des informations sur les conflits dans chaque document. Oui Booléen Faux
deleted_conflicts Renvoie des informations sur les révisions conflictuelles supprimées. Oui Booléen Faux
descending Renvoie les documents par ordre de clé décroissant. Oui Booléen Faux
endkey Arrêt du renvoi des enregistrements lorsque la clé spécifiée est atteinte. Oui Chaîne
endkey_docid Arrêt du renvoi des enregistrements lorsque l'ID de document spécifié est atteint. Si endkey n'est pas défini, cet argument est ignoré. Oui Chaîne
include_docs Inclut le contenu complet des documents dans le retour. Oui Booléen Faux
inclusive_end Inclut les lignes dont la clé est égale à la valeur "endkey". Oui Booléen Oui
key Renvoie uniquement les documents dont les ID correspondent à la clé spécifiée. Oui Chaîne
keys Renvoie uniquement les documents dont les ID correspondent à l'une des clés spécifiées. Oui Liste de chaînes
limit Limite le nombre de documents renvoyés au nombre spécifié. Oui Numérique
meta Combinaison abrégée des trois arguments suivants : conflicts, deleted_conflicts et revs_info. L'utilisation de meta=true est identique à l'utilisation de conflicts=true&deleted_conflicts=true&revs_info=true. Oui Booléen Faux
r Spécifie la valeur du quorum de lecture. Oui Numérique 2
revs_info Inclut des informations détaillées pour toutes les révisions de document connues. Oui Booléen Faux
skip Ignore ce nombre d'enregistrements avant de renvoyer les résultats. Oui Numérique 0
startkey Renvoi des enregistrements à partir de la clé spécifiée. Oui Chaîne
startkey_docid Renvoi des enregistrements à partir de l'ID de document spécifié. Si startkey n'est pas défini, cet argument est ignoré. Oui Chaîne

Qu'est-ce que le noeud final _all_docs ?

Les opérations « GET » et « POST $SERVICE_URL/$DATABASE/_all_docs » extraient des données de l'index principal d'une base de données IBM Cloudant, c'est-à-dire l'index qui classe par ordre les « _id » de chaque document. Le point de terminaison _all_docs accepte plusieurs paramètres facultatifs qui permettent de configurer l'étendue des données demandées et de choisir de renvoyer ou non le corps de chaque document. Si aucun paramètre n'est fourni, la méthode _all_docs transmet tous les documents d'une base de données, en renvoyant uniquement l' _id du document et son jeton d' _rev actuel.

Pagination

Utiliser la pagination par clé pour tous les documents. Pour plus de détails et d'exemples, voir la rubrique de la documentation de l'API intitulée Pagination sur tous les documents.

Remarques

  1. L'utilisation d'include_docs=true peut avoir une incidence sur les performances.

  2. Lorsque vous utilisez l'argument keys, il peut être plus facile d'envoyer une demande POST plutôt qu'une demande GET si plusieurs chaînes doivent répertorier les clés que vous voulez obtenir.

  3. Lorsque vous utilisez l'argument keys et que la révision est supprimée, l'attribut value qui est renvoyé est un objet JSON avec le paramètre _rev en cours du document et un attribut _deleted. L'attribut doc est rempli uniquement si vous avez spécifié include_docs=true dans la demande et a pour valeur null si le document est supprimé.

Voici un exemple qui utilise HTTP pour répertorier tous les documents d'une base de données :

GET /_all_docs HTTP/1.1

Voir l'exemple suivant pour répertorier tous les documents d'une base de données :

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))

L'exemple précédent de Go requiert le bloc d'importation suivant :

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

Tous les exemples de Go nécessitent l'initialisation de l'objet service. Pour plus d'informations, reportez-vous à la documentation de l'API Section Authentification pour avoir des exemples.

Voici un exemple qui utilise HTTP pour répertorier tous les documents d'une base de données correspondant à au moins l'une des clés spécifiées :

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

Reportez-vous à l'exemple suivant pour répertorier tous les documents d'une base de données correspondant à au moins l'une des clés spécifiées :

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))

L'exemple précédent de Go requiert le bloc d'importation suivant :

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

Tous les exemples de Go nécessitent l'initialisation de l'objet service. Pour plus d'informations, reportez-vous à la documentation de l'API Section Authentification pour avoir des exemples.

La réponse est un objet JSON qui contient tous les documents de la base de données correspondant aux paramètres. Le tableau suivant décrit la signification des zones individuelles :

Champs de l'objet JSON
Zone Description Type
offset Décalage de début de la liste de documents. Numérique, Null (le type peut être si null si des clés sont spécifiées dans keys.)
rows Tableau d'objets de document. Tableau
total_rows Nombre de documents dans la base de données ou la vue qui correspondent aux paramètres de la requête. Numérique
pdate_seq Séquence de mise à jour en cours pour la base de données. Chaîne

Voici un exemple de réponse suite à une demande d'obtention de tous les documents d'une base de données :

{
	"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"
			}
		}
	]
}