2016-05-16 108 views
0

什么是发射原稿值的一个较好的方法:Cloudant二级索引查询include_docs

  1. 保持文档作为秒的值。索引键,如emit(doc._id,doc)或
  2. 值应为空并且查询包含include_docs。

据我了解,include_docs = true会在查看二级索引时进行另一个查询查询(内部),但另一方面,插入/更新速度减慢,文档成为次要索引值。

任何资源,作为所有可以在二级索引中完成的详尽参考,将是非常有用的。

回答

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) 
    

    和样本URL现在是:

    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}); 
    

    和样本URL来获取摘要是:

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

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

显然有更多的机制可用:复杂的键,减少功能等,但我认为上述2例足够了,而不知道确切的用例,它们是探索基本couchdb查询机制的一个很好的起点。

重要的是要考虑您的用例,并设计您的数据模型和视图。