一、安装CouchDB

官网下载CouchDB,在windows下安装CouchDB较为简单,略过。

安装完后,确认CouchDB在运行,然后在浏览器访问http://127.0.0.1:5984/,正常情况不网页上显示

{
"couchdb":"Welcome",
"version":"2.1.1",
"features":[
"scheduler"
],
"vendor":{
"name":"The Apache Software Foundation"
}
}

与CouchDB交互:

1.访问http://127.0.0.1:5984/_utils/去加载Fauxton,通过Fauxton可与CouchDB交互

2.使用curl实用程序和CouchDB交互

安装curl实用程序。如果下载的是安装版curl默认情况下会自动配置环境变量,如果是解压版请自行配置环境变量(即把安装目录的bin路径添加到path下)。完成后在cmd中输入curl,有正常反应则表示安装成功

二、CouchDB

1.创建数据库

由于通过Fauxton操作CouchDB比较简单,这里不详细介绍这种方法。主要介绍通过curl操作CouchDB。

可以通过使用PUT方法通过curl实用程序向服务器发送HTTP请求,在CouchDB中创建数据库。

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

CouchDB返回:

{"ok":true}

这样一个名为albums的数据库就创建成功。-X是告诉curl发送什么请求(GET、PUT、DELETE、POST)。默认情况是发送GET请求。如

curl -X GET http://127.0.0.1:5984

curl  http://127.0.0.1:5984

效果是一样的。如果想知道请求响应的详细信息可加上-v(例如:curl -vX GET)。

2.删除数据库

curl -X DELETE http://127.0.0.1:5984/albums

CouchDB返回:

{"ok":true}

3.创建文档

curl -X PUT http://127.0.0.1:5984/albums/6e1295ed6c29495e54cc05947f18c8af -d '{"title":"There is Nothing Left to Lose","artist":"Foo Fighters"}'
6e1295ed6c29495e54cc05947f18c8af是文档id(建议用UUID或GUID)。-d后面是请求要发送的数据,要求Field-Value对的形式。
如果你没有UUID可通过curl -X GET http://127.0.0.1:5984/_uuids获得。如果你需要更多UUID,可以通过?count=10参数获得10个UUID,或者获取你想要的数目。

CouchDB返回:

{"ok":true,"id":"6e1295ed6c29495e54cc05947f18c8af","rev":"1-2902191555"}

rev,表示修订ID。 每次修改(更新或修改)文档时,CouchDB都会生成_rev值。如果要更新或删除文档,CouchDB希望您包括要更改的版本的_rev字段。此机制用于确保并发控制。

注意:在windows下创建文档应这样输入:

curl -X PUT http://127.0.0.1:5984/albums/6e1295ed6c29495e54cc05947f18c8af -d "{\"title\":\"There is Nothing Left to Lose\",\"artist\":\"Foo Fighters\"}"

否则会报如下错误:

{"error":"bad_request","reason":"invalid UTF-8 JSON"}

参考:https://andrewlocatelliwoodcock.wordpress.com/2011/05/11/curl-returning-invalid-utf-8-json-error-from-couchdb-on-windows-although-json-is-correct/

3.更新文档

可通过curl -X GET http://127.0.0.1/albums/6e1295ed6c29495e54cc05947f18c8af查到修订版本id再执行

curl -X PUT http://127.0.0.1:5984/albums/6e1295ed6c29495e54cc05947f18c8af \
-d '{"_rev":"1-2902191555","title":"There is Nothing Left to Lose","artist":"Foo Fighters","year":"1997"}'

_rev为从文档中查出来的修订版本id。

CouchDB返回

{"ok":true,"id":"6e1295ed6c29495e54cc05947f18c8af","rev":"2-8aff9ee9d06671fa89c99d20a4b3ae"}

4.删除文档

curl -X DELETE http://127.0.0.1:5984/albums/6e1295ed6c29495e54cc05947f18c8af?rev=4-d56957735aa2d7f352044103f39912c9

CouchDB返回

{"ok":true,"id":"6e1295ed6c29495e54cc05947f18c8af","rev":"5-5c8ce4ce0709421945867b0e05cb19c4"}

验证删除:

curl -X GET http://127.0.0.1:5984/albums/6e1295ed6c29495e54cc05947f18c8af

CouchDB返回

{"error":"not_found","reason":"deleted"}

5.附加文件

curl -X PUT http://127.0.0.1:5984/albums/6e1295ed6c29495e54cc05947f18c8af/artwork.jpg?rev=3-1b29c1219b6d80a8f7ded1ddfebb69ed --data-binary @E:\artwork.jpg -H "Content-Type:image/jpg"

上述命令通过PUT请求将E:\artwork.jpg附加到albums/6e1295ed6c29495e54cc05947f18c8af中,并命名为artwork.jpg。--data-binary @是告诉curl读文件内容到HTTP请求体, -H告诉CouchDB,我们上传的是JPEG文件。

CouchDB返回

{"ok":true,"id":"6e1295ed6c29495e54cc05947f18c8af","rev":"4-d56957735aa2d7f352044103f39912c9"}

可通过http://127.0.0.1:5984/albums/6e1295ed6c29495e54cc05947f18c8af/artwork.jpg访问附加文件。

再次请求文档

curl http://127.0.0.1:5984/albums/6e1295ed6c29495e54cc05947f18c8af

CouchDB返回

{
"_id": "6e1295ed6c29495e54cc05947f18c8af",
"_rev": "3-131533518",
"title": "There is Nothing Left to Lose",
"artist": "Foo Fighters",
"year": "1997",
"_attachments": {
"artwork.jpg": {
"stub": true,
"content_type": "image/jpg",
"length": 52450
}
}
}

参考链接:

1.http://docs.couchdb.org/en/2.1.1/intro/tour.html

2.http://docs.couchdb.org/en/2.1.1/intro/api.html

3.https://andrewlocatelliwoodcock.wordpress.com/2011/05/11/curl-returning-invalid-utf-8-json-error-from-couchdb-on-windows-although-json-is-correct/

CouchDB的简单使用的更多相关文章

  1. CouchDB简单应用

    CouchDB是众多称作NoSQL解决方案中的一员.与众不同的是,CouchDB是一个面向文档的数据库,在它里面所有文档域(Field)都是以键值对的形式存储的.域(Field)可以是一个简单的键值对 ...

  2. CouchDB学习-介绍

    官方文档 CouchDB 1文档存储 CouchDB服务器主机是一个存储文档的数据库.每一个文档在数据库中都有唯一的名字.CouchDB提供RESTful HTTP API用来读取和更新(添加,编辑, ...

  3. Couchbase 环境搭建与使用(C#)

    Couchbase Couchbase Server (前身是 Membase) 是一个分布式的面向文档的 NoSQL 数据库管理系统,该系统联合了 CouchDB 的简单和可靠以及 Memcache ...

  4. Couchbase入门——环境搭建以及HelloWorld

    一.引言 NoSQL(Not Only SQL),火了很久了,一直没空研究.最近手上一个项目对Cache有一定的要求,借此机会对NoSQL入门一下.支持NoSQL的数据库系统有很多,  比如Redis ...

  5. CNCF CloudNative Landscape

    cncf landscape CNCF Cloud Native Interactive Landscape 1. App Definition and Development 1. Database ...

  6. NoSQL数据库 Couchbase Server - 分布式缓存

    Couchbase Server (前身是 Membase) 是一个分布式的面向文档的 NoSQL 数据库管理系统,该系统联合了 CouchDB 的简单和可靠以及 Memcached 的高性能以及 M ...

  7. CNCF LandScape Summary

    CNCF Cloud Native Interactive Landscape 1. App Definition and Development 1. Database Vitess:itess i ...

  8. 【DB宝46】NoSQL数据库之CouchBase简介、集群搭建、XDCR同步及备份恢复

    目录 一. CouchBase概述 1.1.简述 1.2.CouchDB和CouchBase比对 1.2.1.CouchDB和CouchBase的相同之处 1.2.2.CouchDB和CouchBas ...

  9. CouchDB 简单HTTP接口使用说明

    目录 1.简介 2.安装 2.HTTP接口简单使用 2.1.认证接口 2.1.1 Basic Authentication 2.1.2 Cookie Authentication 2.2 创建与删除数 ...

随机推荐

  1. java5的静态导入import static

    在Java 5中,import语句得到了增强,以便提供甚至更加强大的减少击键次数功能,虽然一些人争议说这是以可读性为代价的.这种新的特性成为静态导入. 1.静态导入的与普通import的区别: imp ...

  2. SpringBoot之HandlerInterceptor拦截器的使用 ——(三)获取requestBody解决java.io.IOException: Stream closed

    原文地址:https://blog.csdn.net/zhibo_lv/article/details/81875705 感谢原作者

  3. 史上最全Java面试题全集

    2013年年底的时候,我看到了网上流传的一个叫做<Java面试题大全>的东西,认真的阅读了以后发现里面的很多题目是重复且没有价值的题目,还有不少的参考答案也是错误的,于是我花了半个月时间对 ...

  4. IO流文件拷贝

    目录 IO流文件拷贝 前言 字节流(使用FileInputStream和FileOutputStream读取每一个字节...) 字节流(使用FileInputStream和FileOutputStre ...

  5. 利用Load命令将本地文本里面的数据导入到MySQL数据库

    摘要:在使用MySQL是我们可能会遇到要向我们的表中插入大量的数据如果都使用以下的语句在命令行输入有点不太切实际,幸好MySQL为我们提供了LOAD命令可以批量的从本地文件向MySQL表中导入数据! ...

  6. 关于HTTP协议与HTTP状态码的简要介绍

    在互联网时代HTTP协议的重要性无需多言,对于技术岗位的同学们来说理解掌握HTTP协议是必须的.本篇博客就从HTTP协议的演进.特性.重要知识点和工作中常见问题的总结等方面进行简单的介绍.理解掌握了这 ...

  7. 京东Y事业部打造一体化质量管理平台

    互联网企业质量管理的困惑 作为互联网时代的互联网企业,我们的研发模式和传统模式相比,最显著的不同在于发布节奏加快了,这个加快不是快了10%,20%,50%,而是加快了几倍,甚至几十倍,上百倍.面对加快 ...

  8. 7/8段码管(LED)

    LED显示器在许多的数字系统中作为显示输出设备,使用非常广泛.它的结构是由发光二极管构成的a.b.c.d.e.f和g七段,并由此得名,实际上每个LED还有一个发光段dp,一般用于表示小数点,所以也有少 ...

  9. kafka相关问题总结

    一直在使用kafka,遇到过很多问题,总结一下 很多人对比kafka和AMQP的时候,都会强调kafka会丢数据,感觉好像只要用kafka就会丢数据一样,从而排斥使用kafka,亦或者在使用的过程中, ...

  10. ndarray数组的索引和切片

    索引:获取数组中特定位置元素的过程 切片:获取数组元素子集的过程 import numpy as np 一维数组 一维数组的索引和切片与python中的列表类似 索引:若元素个数为n,则索引下标可表示 ...