Docker中CouchDB安装配置图解(2)

同样,进入当前记录的详情页我们就可以看到 Delete Document 按钮,点击之后当前文档就会被删除。
但是,值得注意的是,当我们使用 Delete Document 操作将文档删除后,表面看是没有数据了,但是该数据仍然占用了那么多空间,并没有减少,如下图:

Docker中CouchDB安装配置图解

这时我们需要进入数据库详情页,使用 Compact & Cleanup… 中的 Compact Database 操作来清理被占用的空间,如果发现此功能点击之后一直在转圈等待,去看看自己是不是管理员用户吧。

使用Docker再次创建一个couchDB
COUCH2=$(docker run -d -p 5984 --volumes-from $COUCH1 couchdb)

使用浏览器浏览第二个数据库

HOST=localhost #这里如果localhost不行,就更换成主机ip
URL="http://$HOST:$(docker port $COUCH2 5984 | grep -o '[1-9][0-9]*$')/_utils/"
echo "Navigate to $URL in your browser, and use the couch interface to add data"

这里可以看到数据已经同步到couchdb的第二台上面临

Docker中CouchDB安装配置图解


使用 cURL 通过 RESTful API 对 CouchDB 进行增删查改
Tips: 对cURL还不太了解的亲们可以搜索下,很好用的工具,可以从这里下载:
注意:为了测试方便,我们删除原来的数据库。
前面已经介绍过,CouchDB支持使用RESTful API的方式来对数据进行操作,例如,我们在浏览器中输入 :32768/demo 就可以查看demo数据库中详细信息。如图:

Docker中CouchDB安装配置图解

下面是借鉴别人的操作流程,自己没有时间敲了,大家随意感受一下CouchDB流畅的RESTful操作方式:

# 获取CouchDB相关信息
curl -X GET :5984
{"couchdb":"Welcome","uuid":"a853c053a5a54a4d3ccbaad0d9ffd3b0","version":"1.6.1","vendor":{"version":"1.6.1","name":"The Apache Software Foundation"}}
 
# 创建demo数据库(需要admin权限,参照下一条命令)
curl -X PUT :5984/demo
{"error":"unauthorized","reason":"You are not a server admin."}
 
# 使用用户名密码登录CouchDB,并创建demo数据库
curl -X PUT :password@127.0.0.1:5984/demo
{"ok":true}
 
# 查看所有数据库
curl -X GET :5984/_all_dbs
["_replicator","_users","demo"]
 
# 查看demo数据库相关信息
curl -X GET :5984/demo
{"db_name":"demo","doc_count":0,"doc_del_count":0,"update_seq":0,"purge_seq":0,"compact_running":false,"disk_size":79,"data_size":0,"instance_start_time":"1452000207199340","disk_format_version":6,"committed_update_seq":0}
 
# 向demo数据库中添加一个文档(自动生成Id),注意:windows下需要使用Content-Type:application/json的HttpHeader
curl -H "Content-Type:application/json"  -X POST :5984/demo -d {\"name\":\"fooly\"}
{"ok":true,"id":"3ebb59dd78ff448f283f48817800321c","rev":"1-0e4ea534f2c1e7f05e21804b5f2f7a71"}
 
# 查看demo数据库中的所有文档
curl -X GET :5984/demo/_all_docs
{"total_rows":1,"offset":0,"rows":[
{"id":"3ebb59dd78ff448f283f48817800321c","key":"3ebb59dd78ff448f283f48817800321c","value":{"rev":"1-0e4ea534f2c1e7f05e21804b5f2f7a71"}}
]}
 
# 获取一个uuid
curl -X GET :5984/_uuids
{"uuids":["3ebb59dd78ff448f283f4881780033c0"]}
 
# 向demo数据库中添加一个文档(使用获取到的uuid作为Id)
curl -H "Content-Type:application/json"  -X PUT :5984/demo/3ebb59dd78ff448f283f4881780033c0 -d {\"name\":\"momo314\"}
{"ok":true,"id":"3ebb59dd78ff448f283f4881780033c0","rev":"1-eb393d36ac1ad38ada8361d94fc5d0b6"}
 
# 更新指定Id的文档(但是失败了,因为CouchDB是按版本提交的,同一个源提交多次会造成一定的混乱。所以,需要指定文档版本进行控制。)
curl -H "Content-Type:application/json"  -X PUT :5984/demo/3ebb59dd78ff448f283f4881780033c0 -d {\"name\":\"momo314\",\"age\":18}
{"error":"conflict","reason":"Document update conflict."}
 
# 更新指定Id和指定版本的文档
curl -H "Content-Type:application/json"  -X PUT :5984/demo/3ebb59dd78ff448f283f4881780033c0 -d {\"_rev\":\"1-eb393d36ac1ad38ada8361d94fc5d0b6\",\"name\":\"momo314\",\"age\":18}
{"ok":true,"id":"3ebb59dd78ff448f283f4881780033c0","rev":"2-5d081e17588c03c27340035e420edecd"}
 
# 获取指定Id的文档内容
curl -X GET :5984/demo/3ebb59dd78ff448f283f4881780033c0
{"_id":"3ebb59dd78ff448f283f4881780033c0","_rev":"2-5d081e17588c03c27340035e420edecd","name":"momo314","age":18}
 
# 删除指定Id和rev版本号的文档
curl -X DELETE :password@127.0.0.1:5984/demo/3ebb59dd78ff448f283f4881780033c0?rev=2-5d081e17588c03c27340035e420edecd
{"ok":true,"id":"3ebb59dd78ff448f283f4881780033c0","rev":"2-5d081e17588c03c27340035e420edecd"}
 
# 查看demo数据库中的所有文档(刚才的文档确实被删除掉了)
curl -X GET :5984/demo/_all_docs
{"total_rows":1,"offset":0,"rows":[
{"id":"3ebb59dd78ff448f283f48817800321c","key":"3ebb59dd78ff448f283f48817800321c","value":{"rev":"1-0e4ea534f2c1e7f05e21804b5f2f7a71"}}
]}
 
# 删除demo数据库(需要admin权限,参照下一条命令)
curl -X DELETE :5984/demo
{"error":"unauthorized","reason":"You are not a server admin."}
 
# 使用用户名密码登录CouchDB,并删除demo数据库
curl -X DELETE :password@127.0.0.1:5984/demo
{"ok":true}
 
# 查看所有数据库(demo数据库确实被删除掉了)
curl -X GET :5984/_all_dbs
["_replicator","_users"]

博文参考:
官网参考:https://docs.docker.com/engine/examples/couchdb_data_volumes/#create-first-database

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/1f3963aa5bae1ade482d738efcc5350a.html