2014-02-21 17 views
0

:CouchDB를 문서/기능

{ 
    "address": [{ 
    "Street": "123 xyz", 
    "City": "Belmont" 
    }] 
} 

어떻게 도시의 이름을 볼 수 있습니다. 올바른가?

function(doc) { 
    emit(doc.address.City,null); 
} 

null 만 반환합니다. 나는 벨몬트라는 이름을보고 싶었다. 감사드립니다.

답변

1

데이터에 address은 배열이므로 City 속성이 없습니다. 당신은 단지 데이터에서 하나 개의 주소가있는 경우

:

{ 
    "address": { 
    "Street": "123 xyz", 
    "City": "Belmont" 
    } 
} 

/{database}/_design/{ddoc}/_view/{view} 얻기 반환해야합니다 :

{"rows":[ 
    {"key":"Belmont", "id":"{id}", "value":null} 
]} 

를 보조 노트로서, 당신은 또한 /{database}/_design/{ddoc}/_view/{view}?include_docs=true를 얻을 수 있음을 유의하시기 바랍니다 :

{"rows":[ 
    {"key":"Belmont", "id":"{id}", "value":null, "doc":{ 
    "address": { 
     "Street": "123 xyz", 
     "City": "Belmont" 
    } 
    }} 
]} 

마지막으로 중요한 점은 실제로 y에서 여러 주소가 필요한 경우입니다.

function(o) { 
    for each (var a in o.address) { 
    emit(a.City); 
    } 
} 
+0

{ "이름": "잭", "주소": [{ "거리": "123 XYZ" "도시": "벨몬트" 우리의 데이터는, 당신은 그들 모두를 보낼 수 있습니다 }] } 만약 내가 또한 이름을 가지고 있다면 당신이 작성한 마지막 함수에 따라 도시와 함께 이름을 볼 수있을 것입니다. 당신의 도움을 주셔서 감사합니다. 나는 그 이름이 가치로서 열쇠와 도시임을보고 싶다. – user3323595

+0

'include_docs = true'를 사용하면 실제로 "jack"과 그의 모든 주소와 함께 전체 문서를 얻을 수 있습니다. 기억할 필요가있는 것은'key'가 여러분이 행을 선택하거나 정렬하기 위해 사용하는 것이며,'value'는 당신이 유지하기를 원하는 복잡한 계산의 결과이거나' reduce' 함수를 사용하면'doc'는 전체 문서입니다. –