2011-04-21 70 views
11

我想在CouchDB視圖中重現此SQL。如何將兩個參數值傳遞給couchdb視圖?

SELECT name,department FROM Persons where id = ? and group_id = ? ; 

如何在CouchDB中爲此SQL編寫視圖和查詢視圖?

+0

@喬治這是常見問題,現在問題很好地重新編寫,也許你可以考慮重新打開它 – SHernandez 2015-03-05 16:51:04

+0

@SHernandez接受的答案需要一些幫助;除了鏈接,它甚至沒有任何信息。如果我正在做所期望的事情,我會繼續並將該答案轉換爲評論;或刪除它。 – 2015-03-05 17:14:39

+1

我寫了食譜章節來回答這樣的問題:http://guide.couchdb.org/editions/1/en/cookbook.html希望這會有所幫助:) – 2011-04-21 09:26:54

回答

16

你可以寫這樣一個觀點:

function(doc) { 
    if (doc.person_id && doc.group_id) { 
    emit([doc.person_id, doc.group_id], {"name":doc.name,"department":doc.department}); 
    } 
} 

我改變你的ID來PERSON_ID因此它不能很容易混淆與_id

我用一個數組作爲視圖中的關鍵,所以你可以方便地查詢它像這樣:

http://127.0.0.1:5984/testdb/_design/designdoc/_view/testview?key=[12,3] 

這或多或少像這樣的查詢:

SELECT name, department FROM Persons where person_id = 12 and group_id = 3 ; 

以下是有關篩選和排序,可欣賞的文章:http://barkingiguana.com/2009/01/22/filtering-and-ordering-couchdb-view-results/

有一個在CouchDB的維基很好的頁面上訪問量:http://wiki.apache.org/couchdb/HTTP_view_API

本章CouchDB的指南中介紹了數組的鍵:http://guide.couchdb.org/draft/views.html

+0

@JanLehnardt你的其他意見不知何故迷路了。也許你或其他人想改善這一點,只需點擊編輯 – SHernandez 2015-03-05 17:48:17

+0

你是一個救生員。一直在尋找這個多年。 +1 – 131 2017-04-09 14:00:38