Dokumente werden innerhalb von CouchDB im JSON Format gespeichert.
Für JSON sind folgende Datentypen definiert: boolean, number, string, object, array, null
Die Daten können beliebig strukturiert und verschachtelt werden.
{
"_id":"docId",
"_rev":"2-7051cbe5c8faecd085a3fa619e6e6337",
...
}
Eigene Feldnamen dürfen nicht mit einem Unterstrich beginnen, diesen nutzt CouchDB für interne Zwecke.
CouchDB definiert folgende Spezialfelder für Dokumente:
_id
Die DocID zur Identifikation eines Dokuments innerhalb einer Datenbank.
_rev
Die Versionsnummer des Dokuments.
_attachments
Speichert die Dateistruktur wenn ein Dokument Anhänge hat.
_deleted
Zeigt an, ob ein Dokument als gelöscht markiert ist.
curl -vX GET http://127.0.0.:5984/<datenbank>/_all_docs
{"total_rows":8,"offset":0,"rows":[
{"id":"eins", ...}
...
]}
Einzelne Dokumente werden über die ID abgefragt.
curl -vX GET http://127.0.0.1:5984/<database>/<doc_id>
{"_id":"eins","_rev":"3-64a04d5fc38516a1612d29e01fc8179f","_attachments":...}
Attachments
Attachments werden CouchDB immer in Dokumenten abgelegt.
Dokument und Attachments werden gemeinsam angelegt, ein Dokument kann auch mehrere Attachments haben.
curl -X PUT --data-binary "@logo.png" --header "Accept: application/json" --header "Content-Type: image/png" --header "Transfer-Encoding: chunked" --header "Expect: " -v http://127.0.0.1:5984/<datenbank>/<doc_id>/pic.png
Wenn Attachments an den Client übertragen werden, verhält sich CouchDB wie ein Webserver.
Im Browser wird man dann das Bild sehen was als Attachment beim Dokument gespeichert ist.
curl -vX GET http://127.0.0.1:5984/<datenbank>/<doc_id>/pic.png
curl -vX PUT --data-binary "@logo.png" --header "Accept: application/json" --header "Content-Type: image/png" --header "Transfer-Encoding: chunked" --header "Expect: " -v http://127.0.0.1:5984/<datenbank>/<doc_id>/pic.png?rev=<rev_id>
curl -vX DELETE http://127.0.0.1:5984/<datenbank>/<doc_id>/pic.png?rev=<rev_id>