从命令行使用CouchDB

2020年12月31日19:43:50 发表评论 113 次浏览

介绍

从命令行了解如何使用Curl实用程序与CouchDB一起使用。尽管Futon Web管理界面是使用CouchDB执行简单操作的一种简便方法, 但API是在CouchDB中手动和手动执行标准CRUD(创建, 读取, 更新, 删除)操作的最灵活, 最快和最强大的方法。与脚本。

要求

  • 安装了CouchDB的云服务器(Ubuntu 16.04)。

要安装CouchDB, 请按照本文中的说明进行操作在Ubuntu 16.04上安装和使用CouchDB.

使用CouchDB的基础

安装CouchDB之后, 你可以使用标准的GET和PUT请求通过端口5984上的HTTP访问其API。

在命令行中, 你可以使用Curl发出这些请求。

你可以使用以下命令对此进行测试:

curl http://127.0.0.1:5984/

服务器将以欢迎消息响应:

{"couchdb":"Welcome", "uuid":"f33e87d034bb8c1227f866445a977555", "version":"1.6.1", "vendor":{"version":"16.04", "name":"Ubuntu"}}

使用-X标志, 用于指定Curl的方法(例如GET或PUT)。例如, 用于获取CouchDB安装中所有数据库的列表的命令是:

curl -X GET http://127.0.0.1:5984/_all_dbs

创造

使用PUT方法创建数据库或文档(记录)。例如, 创建一个名为评论命令是:

curl -X PUT http://127.0.0.1:5984/reviews

要将文档添加到数据库, 请使用卷曲-X PUT以及数据库名称和要创建的记录的唯一ID, 然后使用-d以JSON格式传递记录的信息。

例如, 以下命令将插入一个ID为ID的记录01进入评论数据库:

curl -X PUT http://127.0.0.1:5984/reviews/01 -d '{"reviewer_name":"Ben", "stars":"4", "details":"Love the calzone!"}'

使用GET方法检索和读取有关数据库或文档的信息。要获取文档, 请在URL末尾指定文档的ID。

例如, 检索我们在上例中插入的记录的命令是:

curl -X GET http://127.0.0.1:5984/reviews/01

服务器将以JSON格式响应文档内容:

{
"_id":"01", "_rev":"1-8ce1d23b7455705c3c2cbeeb86d8ccf5", "reviewer_name":"Ben", "stars":"4", "details":"Love the calzone!"
}

更新

CouchDB具有自动修订跟踪和控制功能。在上面的示例中, 请注意有一个_rev即使没有在原始PUT请求中插入修订号, 也不能添加修订号。每次插入记录时, 都会自动创建此修订号字段。

为了更新文档, 你将需要告诉CouchDB你正在更新哪个修订版。如果版本号匹配, 则CouchDB将更新信息并生成新的版本号。 (如果版本号不匹配, 则CouchDB将返回409冲突错误。)

要更新文档, 请使用PUT方法, 并包括修订号。你可以更新整个文档, 也可以仅更新一个字段。

在此示例中, 我们将评级中的星级数从4更新为5:

curl -X PUT http://127.0.0.1:5984/reviews/01 -d '{"_id":"01", "stars":"5", "_rev":"1-8ce1d23b7455705c3c2cbeeb86d8ccf5"}'

服务器将返回一个响应, 其中包括"好"以及新的修订号:

{"ok":true, "id":"01", "rev":"2-55b1c6edb9a0fd8eb58bd73b8e0058d5"}

<a id="id7> </a>

删除

若要删除记录, 请使用DELETE方法并包括记录的ID和最新的修订号。例如, 删除我们上面创建的记录的命令是:

curl -X DELETE http://127.0.0.1:5984/reviews/01?rev=2-55b1c6edb9a0fd8eb58bd73b8e0058d5

服务器将返回一个响应, 其中包括"好"以及新的修订号:

{"ok":true, "id":"01", "rev":"3-ec3f3491444854d08aaa7dd6ffe68670"}

这是因为, 为了保留CouchDB的复制功能, 实际上并未删除记录。而是添加了一个修订, 其中包含有关删除的信息, 并且该记录将无法通过标准请求进行访问。

例如, 如果我们尝试再次查看该记录, 则服务器将响应"未找到":

user@localhost:$ curl -X GET http://127.0.0.1:5984/reviews/01
{"error":"not_found", "reason":"deleted"}
一盏木

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: