接前一篇文章,今天看看怎样在CouchDB数据库中使用索引和执行查询等操作。

在CouchDB中对文档的查询可以通过_find命令来实现,_find命令也需要使用POST方法请求,提交的数据是一个JSON对象。

准备测试数据

先准备一个数据库和一些测试数据

# 创建一个users数据库
$ curl -X PUT http://localhost:5984/users
{"ok":true}# 添加一些测试数据
$ curl -X POST http://localhost:5984/users/_bulk_docs -H "Content-Type:application/json" -d '{"docs": [{"name":"user1", "age": 20, "sex": 1}, {"name":"user2", "age": 25, "sex": 1}, {"name":"user3", "age": 30, "sex": 1}, {"name":"user4", "age": 35, "sex": 1}, {"name":"user5", "age": 40, "sex": 1}, {"name":"user6", "age": 45, "sex": 1}, {"name":"user7", "age": 50, "sex": 1}, {"name":"user8", "age": 60, "sex": 1}, {"name":"user9", "age": 70, "sex": 1}, {"name":"user10", "age": 80, "sex": 1}]}'
[{"ok":true,"id":"a10691778356d48a39f4ec678400efb0","rev":"1-28ba94df4e768e20af039ebcf1a56a92"},{"ok":true,"id":"a10691778356d48a39f4ec678400f541","rev":"1-708cef2b30e96cc60d0db2e51ffc4754"},{"ok":true,"id":"a10691778356d48a39f4ec678400f7ea","rev":"1-3668a6e0725f7158bd07d0a00b2606bf"},{"ok":true,"id":"a10691778356d48a39f4ec678400fff1","rev":"1-b2de620ef1e4f8e4cb39badb41629fc4"},{"ok":true,"id":"a10691778356d48a39f4ec6784010412","rev":"1-e674282fd617cdf0970f767bd528c070"},{"ok":true,"id":"a10691778356d48a39f4ec67840108be","rev":"1-477e98d943469098a19cb98e5ddfd5eb"},{"ok":true,"id":"a10691778356d48a39f4ec6784011650","rev":"1-cff431d713717931882056b1c6cb4b45"},{"ok":true,"id":"a10691778356d48a39f4ec6784011d50","rev":"1-b79e63171c37f8c41c4b3c49bc4eeb9a"},{"ok":true,"id":"a10691778356d48a39f4ec6784012bf8","rev":"1-bf42e3495863304b2a6ec520a833aa9e"},{"ok":true,"id":"a10691778356d48a39f4ec6784012eb3","rev":"1-848ad86d8b361e100b6cb78484ff3626"}]

查询

# 查询年龄在25-75之间的用户,返回结果从第0条开始,返回5条,且只返回_id, name, age, _rev字段。
$ curl -X POST http://localhost:5984/users/_find -H "Content-Type:application/json" -d '{"selector": {"age": {"$gte": 25, "$lte": 75}}, "fields": ["_id", "name", "age", "_rev"], "limit": 5, "skip": 0}'{"docs":[
{"_id":"a10691778356d48a39f4ec678400f541","name":"user2","age":25,"_rev":"1-708cef2b30e96cc60d0db2e51ffc4754"},
{"_id":"a10691778356d48a39f4ec678400f7ea","name":"user3","age":30,"_rev":"1-3668a6e0725f7158bd07d0a00b2606bf"},
{"_id":"a10691778356d48a39f4ec678400fff1","name":"user4","age":35,"_rev":"1-b2de620ef1e4f8e4cb39badb41629fc4"},
{"_id":"a10691778356d48a39f4ec6784010412","name":"user5","age":40,"_rev":"1-e674282fd617cdf0970f767bd528c070"},
{"_id":"a10691778356d48a39f4ec67840108be","name":"user6","age":45,"_rev":"1-477e98d943469098a19cb98e5ddfd5eb"}
],
"bookmark": "g1AAAABweJzLYWBgYMpgSmHgKy5JLCrJTq2MT8lPzkzJBYorJBoamFkamptbGJuapZhYJBpbppmkJpuZW5gYGBpYJKWC9HHA9BGlIwsAYPkdEQ",
"warning": "no matching index found, create an index to optimize query time"}

结果查询出来了,但是出现了一个警告,这个查询没有索引可用。下面我们创建一个索引,然后再执行查询看看。

# 创建索引(这里只是做个演示)
$ curl -X POST http://localhost:5984/users/_index -H "Content-Type:application/json" -d '{"index": {"fields": ["age"]}, "name": "age-index", "type": "json"}'

然后再次执行上面的查询,可以发现不会再报上面的那个警告了。

参考

  • http://docs.couchdb.org/en/latest/api/index.html

CouchDB查询文档相关推荐

  1. elasticsearch查询文档数量

    查询文档数量时很常见的操作,一般可以直接使用count获取文档数,但是获取到数量信息,在[分页]应用中,意味着需要查询分页然后再查询总数. 有另一种方法,可以让我们在一次查询中获取分页数据并得到总量. ...

  2. ElasticSearch入门 第五篇:使用C#查询文档

    网址:http://www.cnblogs.com/ljhdo/p/4550135.html 这是ElasticSearch 2.4 版本系列的第五篇: ElasticSearch入门 第一篇:Win ...

  3. MongoDB 查询文档

    MongoDB 查询文档 语法 MongoDB 查询数据的语法格式如下: >db.COLLECTION_NAME.find() find() 方法以非结构化的方式来显示所有文档. 如果你需要以易 ...

  4. MongoDB查询文档(非常详细,不要错过哦~)

    下面是在MongoDB中查询数据的操作的详细整理,希望可以帮助到有需要的小伙伴~ 条件查询的前提条件是创建一个数据库,创建集合规则,创建文档.插入数据. 根据条件查询文档 查询大于小于(在一定数组范围 ...

  5. days05-DSL查询文档以及对搜索结果进行处理

    一. DSL查询文档 1. DSL查询分类 DSL Query的分类 Elasticsearch提供了基于JSON的DSL(Domain Specific  Language)来定义查询.常见的查询类 ...

  6. MongoDB之查询文档

    目录 文档查询 MongoDB 与 RDBMS Where 语句比较 MongoDB AND 条件 MongoDB OR 条件 AND 和 OR 联合使用 模糊查询 排序 分页 总条数 去重 指定返回 ...

  7. JQuery 查询文档元素

    JQuery jQuery 为web脚本编程提供了通用的抽象层,使得它几乎用于任何脚本编程的情形. jQuery 能够满足如下功能: l          取得页面的元素 l          修改页 ...

  8. mongodb查询文档

    mongodb查询文档 语法:db.集合名.find({条件}) 操作符使用频率最高的: 大于: $gt > 大于等于: $gte >= 小于: l t < 小 于 等 于 : lt ...

  9. MangoDB插入、删除和查询文档

    目录 插入文档 实例 MongoDB 删除文档 语法 实例 MongoDB 查询文档 语法 实例 MongoDB 与 RDBMS Where 语句比较 MongoDB AND 条件 实例 MongoD ...

最新文章

  1. android 初始化语言,3.4.1 Android初始化语言(1)
  2. linux下helloworld的简单编译过程
  3. 基于动态提前退出的预训练模型推理加速简介
  4. 香辣弹簧:自动接线的不同方法
  5. 孙叫兽进阶之路之软件测试基础知识
  6. DBCP连接池配置常用参数说明
  7. 计算机网络(二十四)-路由算法及路由协议
  8. 3-6:类与对象下篇——构造函数中的初始化列表、匿名对象和explicit关键字
  9. LOGO设计没有灵感?5种方法来寻找标志设计的灵感和想法
  10. HDU 4722 Good Numbers 2013年四川省赛题
  11. 人脸方向学习(五):Face Recognition-ArcFace解读
  12. HTML期末大学生网页设计作业--官网仿qq音乐(1页)
  13. ucenter 用户加密方式
  14. android如何设置自适应大小的背景图片,如何调整背景图片大小以适应Android中的应用程序屏幕大小...
  15. 深度解析中国养老产业发展前景
  16. 强化学习1 高斯赛德尔迭代
  17. 苹果蓝牙耳机太贵了买哪个替代?苹果蓝牙耳机平替推荐
  18. 没项目实战经验?分享自学练手的软件测试项目实战+数据库+接口,部署超级简单
  19. DFRobot语音识别模块推荐-Gravity: I2C离线中文语音识别模块
  20. 怎么在linux系统中输入日历,在Linux终端中使用日历

热门文章

  1. chmod 命令详细用法
  2. 流体力学——流体动力学
  3. Mybatis丶Mybatis-Plus
  4. Java——名片管理系统
  5. 好程序员web前端分享用CSS和JS打造一个简单的图片编辑器
  6. 计算机时代杂志好吗,计算机时代是什么级别的刊物
  7. HRSC2016舰船检测训练实验过程记录
  8. 配置JAVA 环境变量
  9. 【摘】请问make -j8 和make -j4 是什么意思?什么作用?
  10. expected a type specifier