MST

星途 面试题库

面试题:CouchDB复杂条件查询之多字段组合查询

在CouchDB的文档集合中,文档包含 'name'(字符串类型)、'age'(数值类型)和 'city'(字符串类型)字段。要求查询出年龄大于30岁且居住在 'Beijing' 且名字中包含 'John' 的所有文档。请描述使用CouchDB HTTP API进行该复杂条件查询的详细步骤及对应的请求内容。
35.0万 热度难度
数据库CouchDB

知识考点

AI 面试

面试题答案

一键面试
  1. 创建视图
    • 使用 PUT 请求到 http://{couchdb_server_url}/{database_name}/_design/{design_doc_name}
    • 请求体示例(假设设计文档名为 query_design):
    {
        "views": {
            "filter_docs": {
                "map": "function(doc) { if (doc.age > 30 && doc.city === 'Beijing' && doc.name.includes('John')) { emit(doc._id, doc); } }"
            }
        }
    }
    
  2. 查询视图
    • 使用 GET 请求到 http://{couchdb_server_url}/{database_name}/_design/{design_doc_name}/_view/{view_name}
    • 对于上述创建的视图,请求URL为 http://{couchdb_server_url}/{database_name}/_design/query_design/_view/filter_docs
    • 可以添加一些可选参数,如 ?include_docs=true 来在响应中包含完整的文档内容,而不仅仅是文档ID。完整请求示例:http://{couchdb_server_url}/{database_name}/_design/query_design/_view/filter_docs?include_docs=true

注意:在实际使用中,需将 {couchdb_server_url} 替换为实际的CouchDB服务器地址,{database_name} 替换为实际的数据库名,{design_doc_name}{view_name} 替换为自定义的设计文档名和视图名。