2016-05-16 98 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查詢機制的一個很好的起點。

重要的是要考慮您的用例,並設計您的數據模型和視圖。