Dokument

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>

Comments are closed.