![](/img/trans.png)
[英]how to select all documents from mongodb where one field does not equal a certain value
[英]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
字符串。 我將https
和6984
端口一起使用,因為我將CouchDB與SLL和自簽名證書一起使用,但是可以將其與http
和端口5984
。
同樣在上面的curl
命令中,我將我的鍵與轉義的雙引號一起使用,例如: ?key=\\"Jacob\\"
。 原因是我的Linux shell命令行在將雙引號傳遞給curl
之前先吃了雙引號,因此我必須對其進行轉義以使其起作用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.