CouchDB入门
2016-09-08 本文已影响1959人
cfpeng
CouchDB存储由键-值对组成的JSON文档 , 提供了REST API来执行所有工作,包括创建、管理数据库和文档,甚至是触发复制 。
特点
- 只支持追加的存储模式
- 所有对CouchDB的调用都运行于REST接口之上
- CouchDB避免冲突的秘诀——确保只修改最新版本的文档 (_id域和_rev域必须匹配)
- 没有事务与锁的概念
archlinux 安装
$sudo pacman -S couchdb
$sudo systemctl start couchdb //启动服务
基本用法
$http http://localhost:5984/ // 检查数据库是否已经安装和运行起来
{
"couchdb": "Welcome",
"uuid": "7764d1bc2fcfb88302cf8a444002031d",
"vendor": {
"name": "The Apache Software Foundation",
"version": "1.6.1"
},
"version": "1.6.1"
}
创建数据库
$http --verbose put http://localhost:5984/test-db
{
"ok": true
}
检查新建的数据库
$http --verbose http://localhost:5984/test-db
{
"committed_update_seq": 0,
"compact_running": false,
"data_size": 0,
"db_name": "test-db",
"disk_format_version": 6,
"disk_size": 79,
"doc_count": 0, // 文档个数
"doc_del_count": 0,
"instance_start_time": "1473316715388628",
"purge_seq": 0,
"update_seq": 0
}
添加文档, 如果要使用自定义的_id, 需要手动指定_id域
$http --verbose post http://localhost:5984/test-db/ _id=test-doc-1 name="doc name" // 使用自定义id
{
"id": "test-doc-1",
"ok": true,
"rev": "1-7fb9512fe27fc29fd3fe66489c0e0701"
}
读取文档
$http --verbose http://localhost:5984/test-db/test-doc-1
{
"_id": "test-doc-1",
"_rev": "1-7fb9512fe27fc29fd3fe66489c0e0701",
"name": "doc name"
}
修改文档: 修改name域和新添加title域
$http --verbose put http://localhost:5984/test-db/test-doc-1 _id=test-doc-1 _rev=1-7fb9512fe27fc29fd3fe66489c0e0701 name="new name" title="add a new title field"
{
"id": "test-doc-1",
"ok": true,
"rev": "2-998293b064a698292138c7b8ae9250ba"
}
检查修改后的文档
$http --verbose http://localhost:5984/test-db/test-doc-1
{
"_id": "test-doc-1",
"_rev": "2-998293b064a698292138c7b8ae9250ba",
"name": "new name",
"title": "add a new title field"
}
删除文档:通过If-Match指定_rev的值
$http --verbose delete http://localhost:5984/test-db/test-doc-1 If-Match:2-998293b064a698292138c7b8ae9250ba
{
"id": "test-doc-1",
"ok": true,
"rev": "3-564d7a7626a2b21c2f1b2d8c8dcdfa44"
}
查看所有文档
$http --verbose http://localhost:5984/test-db/_all_docs
$http --verbose http://localhost:5984/test-db/_all_docs?include_docs=true // 列出文档全部域
删除数据库
$http --verbose delete http://localhost:5984/test-db
{
"ok": true
}