2015-02-05 36 views
3

如何創建與此類SQL查詢等效的視圖?如何使用多個WHERE和OR子句在CouchDB中創建視圖

SELECT * FROM桶,(UID = '$ UID',接受= 'Y')或(UID = '$ UID' AND AUTHORID = '$ logginid')

我的數據存儲在此方法:

{ 
"id": 9476183, 
"authorid": 85490, 
"content": "some text here", 
"uid": 41, 
"accepted": "Y", 
"time": "2014-12-09 10:44:01", 
"type": "testimonial" 
} 

回答

0

視圖看起來是這樣的:

function(doc) { 
    if (doc.accepted == 'Y') { 
     emit(doc.uid, null); 
    } 
    emit([doc.uid, doc.authorid], null); 
} 

你會用key=$uid第一查詢。如果沒有匹配,請用key=[$uid,$loginid]查詢。

+0

你好。謝謝你的嘗試,但這種方式不適用於我的情況。我會一直傳遞例如這個值startkey = [uid,authorid] - 所以這行代碼發出(doc.uid,null);不期望得到一系列itens。 – valter 2015-02-06 12:41:37

+0

它可以忽略$ loginid值,如果accepted.Y它會工作。 – valter 2015-02-06 12:42:23

+0

它應該用這個替換第三行的東西: emit([doc.uid],null);比它會返回結果,每當鍵有一個或兩個值,但如果我把鍵= [uid,logginid]它將不會返回接受= Y的文檔 – valter 2015-02-06 12:45:17