簡體   English   中英

CouchDB 2.0+計算具有特定字段值的所有文檔

[英]CouchDB 2.0+ count all documents with a certain field value

我是CouchDB的新手,我正在尋找執行以下計數的最佳方法:

我有如下文件:

{
field_1: "some_string",
field_2: "some_other_string"
}

我想對在field_2中具有一定值的所有文檔進行計數,以便我知道在使用selector通過POST /{db}/_find具有該字段值的所有文檔時應該設置的limit是什么。

我已經閱讀了一些有關“設計文檔和視圖以及查詢協議”的內容,但我不知道實現此目的的正確方法是什么。 我什至需要先計算文件數量嗎? 還是在執行查找時有一種快速了解這一點的方法?

...當查找具有該字段值的所有文檔時...

我假設您的目的是查找具有特定值的特定字段的所有文檔。

我對使用/<db>/_find/<db>/_index CouchDB 芒果查詢了解不多,但我認為您可以通過執行HTTP請求來查找具有特定字段值的所有文檔。


假設您有如下文檔,並且您想查找title字段等於Jacob字符串的所有文檔:

{
  "_id": "doc5",
  "_rev": "1-27f5da5ca3157d4bca8b485d411e86c5",
  "unicodeString": "יעקב",
  "title": "Jacob"
}

您可以實現如下所示的視圖圖功能。 該視圖根據B樹數據結構中的title字段對數據庫中的所有文檔進行排序:

function (doc) {
  if(doc.title){
    emit(doc.title, [doc.unicodeString])
  }
}

假設上面的視圖的名稱是by_title ,數據庫的名稱是sample ,那么我們可以像下面這樣執行HTTP請求,以獲取所有title字段等於例如Jacob字符串的文檔:

$ curl -k -X GET https://joe:joe@192.168.1.106:6984/sample/_design/by_title/_view/by_title?key=\"Jacob\"
{"total_rows":15,"offset":8,"rows":[
{"id":"doc5","key":"Jacob","value":["יעקב"]},
{"id":"doc6","key":"Jacob","value":["ישראל"]}
]}

如您所見,上面帶有curl HTTP GET請求返回的所有文檔的title字段等於Jacob字符串。 我將https6984端口一起使用,因為我將CouchDB與SLL和自簽名證書一起使用,但是可以將其與http和端口5984

同樣在上面的curl命令中,我將我的鍵與轉義的雙引號一起使用,例如: ?key=\\"Jacob\\" 原因是我的Linux shell命令行在將雙引號傳遞給curl之前先吃了雙引號,因此我必須對其進行轉義以使其起作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM