Cloudant二级索引查询include_docs

时间:2016-05-16 14:36:48

标签: couchdb cloudant

发布文档值的更好方法是什么:

  1. 将文档保留为sec的值。索引键,如emit(doc._id,doc)或
  2. 该值应为null并且查询中包含include_docs。
  3. 据我了解,include_docs = true将在查看二级索引时进行另一个查询查询(内部),但另一方面,插入/更新是否会因为doc是二级索引的一部分而减慢值。

    任何资源都可以作为二次索引中所有内容的详尽参考,非常有用。

1 个答案:

答案 0 :(得分:0)

请查看官方的couchdb文档:http://docs.couchdb.org/en/1.6.1/couchapp/views/intro.html

在不知道用例的情况下很难确定什么是更好的。 您提供的地图功能会发出所有文档,如果您需要获取所有文档,这将非常有用。以下方案描述了您可以考虑的其他一些案例:

  • 如果您的文档很小,并且您可能会按照文档中的某些字段进行搜索,例如日期,则可以将该字段作为键发出,而不将任何值作为值(视图名称可以是by_date ),在查询中定义搜索条件并包含文档:

    emit(doc.date)
    

    示例网址为:

    http://host:port/db/_design/searches/_view/by_date?key="2012-01-5"&include_docs=true
    

    即可立即为您提供符合搜索条件的所有文件。

  • 同样,您可以将doc作为值发出,而不是使用'include_docs'选项:

    emit(doc.date, doc)
    

    现在有一个示例网址:

    http://host:port/db/_design/searches/_view/by_date?key="2012-01-5"
    

    不幸的是,我不知道这个和上面的性能差异是什么。

  • 如果您的文档很大,并且您可能在获取单个文档之前提供摘要,(我们可以调用该视图by_date_summaries):

    emit(doc.date, {"id": doc._id, "title":doc.title, "info":doc.otherInfo});
    

    获取摘要的示例网址为:

    http://host:port/db/_design/searches/_view/by_date_summaries?key="2012-01-5"
    

    现在您可以显示摘要列表,一旦用户选择其中一个摘要,您就可以使用摘要中发出的ID获取实际文档

显然有更多可用的机制:复杂的密钥,减少函数等,但我认为上述2个案例已经足够,不知道确切的用例,它们是探索基本的couchdb查询机制的良好起点。

考虑您的用例并预先设计数据模型和视图非常重要。