2013-04-05 56 views
0

考慮以下員工的文檔結構CouchDB視圖 - 基於任何屬性

{ 
    "_id":..., 
    "rev":..., 
    "type":"Employee", 
    "fName":..., 
    "lName":..., 
    "designation":..., 
    "department":..., 
    "reportingTo":..., 
    "isActive":.., 
    more attributes 
    more attributes 
} 

而在一個名爲「僱員」

function(doc) { 
    if (doc.type=="Employee") { 
    emit({ 
      "EID":doc._id, 
      "FirstName":doc.fName, 
      "LastName":doc.lName, 
      "Designation":doc.designation, 
      "Department":doc.department, 
      "ReportingTo":doc.reportingTo, 
      "Active":doc.isActive 
     }, 
     null 
     ); 
    } 
}; 

我想查詢查看下面的地圖功能發射鍵作爲JSON和過濾器這個視圖基於任何組合&發射屬性的順序(一個查詢可能包括幾個隨機屬性,可能就像鴨子打字一樣)。可能嗎?如果真的讓我知道一些樣本或鏈接。

謝謝

回答

0

我已經跑了幾次相同的問題;你可以,但是你必須自己編制索引(並不是像你所做的那樣在一個哈希中)。但是,你可以通過整個事情的價值來排放。這可能相當低效,但可以完成工作。 (請參閱此鏈接:View Snippets

即:

function(doc) { 
    if (doc.type=="Employee") { 
     emit(["EID",doc.values.EID], doc.values); 
     emit(["FirstName", doc.fName], doc.values); 
     emit(["LastName", doc.lName], doc.values); 
     emit(["Designation", doc.designation], doc.values); 
     emit(["Department", doc.department], doc.values); 
     emit(["ReportingTo", doc.reportingTo], doc.values); 
     emit(["Active", doc.isActive], doc.values); 
    } 
} 

這使得所有的「EID」的東西在樹等的同一部分,我不知道這是好還是壞您。

如果您開始需要使用[字段名稱:]值搜索的許多功能,則可能值得使用Lucene-CouchDB設置。有幾個存在,但有點不成熟。

+0

感謝您的回覆。你提供的鏈接教會了我一些新的想法。 但您的解決方案不能解決我的問題。我想根據許多隨機屬性進行查詢。但是您的解決方案允許我根據任何1屬性進行查詢。 – 2013-04-08 11:52:41