2013-04-05 15 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"일을두고 당신.

[field name :] 값 검색 기능을 많이 사용하기 시작하면 Lucene-CouchDB 설정으로 이동할 가치가 있습니다. 몇몇은 존재하지만 조금 미숙합니다.

+0

답장을 보내 주셔서 감사합니다. 당신이 제공 한 링크는 나에게 새로운 아이디어를 가르쳐주었습니다. 그러나 해결책으로는 제 문제가 해결되지 않습니다. 많은 임의의 속성을 기반으로 쿼리하고 싶습니다. 그러나 귀하의 솔루션을 통해 어떤 1 개의 속성을 기반으로 쿼리 할 수 ​​있습니다. –