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 :
| 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
-
L'utilisation d'
include_docs=truepeut avoir une incidence sur les performances. -
Lorsque vous utilisez l'argument
keys, il peut être plus facile d'envoyer une demandePOSTplutôt qu'une demandeGETsi plusieurs chaînes doivent répertorier les clés que vous voulez obtenir. -
Lorsque vous utilisez l'argument
keyset que la révision est supprimée, l'attributvaluequi est renvoyé est un objet JSON avec le paramètre_reven cours du document et un attribut_deleted. L'attributdocest rempli uniquement si vous avez spécifiéinclude_docs=truedans la demande et a pour valeurnullsi 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 :
| 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"
}
}
]
}