前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CouchDB查询文档

CouchDB查询文档

作者头像
kongxx
发布2020-02-18 17:31:45
1.4K0
发布2020-02-18 17:31:45
举报

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

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

准备测试数据

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

代码语言:javascript
复制
# 创建一个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"}]

查询

代码语言:javascript
复制
# 查询年龄在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"}

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

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

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

参考

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 准备测试数据
  • 查询
  • 参考
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档