2013-04-02 58 views
2

我想通過一個包含返回設計視圖我做的關鍵領域數組的值來過濾文件陣列關鍵。
篩選與CouchDB中

// _design/products/_view/all 
function(doc) { 
    if (doc.type && doc.type == 'producto'){ 
     emit([doc.created, doc.user], doc); 
    } 
} 

結果:

 
{"total_rows":3,"offset":0,"rows":[ 
{"id":"64243f77b5135758d1f0d55c250001f5","key":[1364931254000,"samuelb1311"],"value":{"_id":"64243f77b5135758d1f0d55c250001f5","_rev":"3-50f67780d6388f3aad469dbdd1081b9e","nombre":"limon","precio":250,"user":"samuelb1311","created":1364931254000,"type":"producto"}}, 
{"id":"64243f77b5135758d1f0d55c2500058e","key":[1364931381000,"samuel123"],"value":{"_id":"64243f77b5135758d1f0d55c2500058e","_rev":"3-c1f893af011ee5a3687b0a9eeedc3467","nombre":"lima","precio":360,"user":"samuel123","created":1364931381000,"type":"producto"}}, 
{"id":"64243f77b5135758d1f0d55c25000e7a","key":[1364931447000,"samuelb1311"],"value":{"_id":"64243f77b5135758d1f0d55c25000e7a","_rev":"3-2b05730dfcf3407b7335ec029e5cfdc5","nombre":"naranja","precio":25,"user":"samuelb1311","created":1364931447000,"type":"producto"}} 
]} 

我需要在關鍵的日期,以升序排序的信息,並從第一次插入到最後插入,反之亦然下降。
那麼,如何過濾用戶的信息,例如用戶「samuelb1311」或用戶「samuel123」?
我嘗試startkey和endkey之類的東西,但這不適合我,那是返回空響應。
感謝您的一些信息,你可以給我帶來!

回答

2

您需要顛倒順序或時間戳和用戶爲了能夠得到只項針對特定用戶。這是因爲當你想使用startkey/endkey時,你只能從按鍵排序的條目中獲得連續的範圍。然後使用startkey和endkey這樣的:

startkey=["foo"]&endkey=["foo","a"] 

看一看http://wiki.apache.org/couchdb/View_collation?action=show&redirect=ViewCollation

+0

我嘗試這樣的事情: 本地主機:5984 /污物/ _design/PRODUCTOS/_view /全部降=真startkey = [{}] endkey = [0, 「samuelb1311」] 不過這回的所有數據所有的用戶,所以,不工作。 –

+1

我想你已經誤解了@thejh所說的話。你需要改變你的發射排放([doc.user,doc.created],...),你的開始鍵是[「samuelb1311」],結束鍵[「samuelb1311」,{}] – ddouglascarr

+0

但如果我做到這一點,產品的順序將從用戶名 –