couchdb보기의 색인을 생성 할 때 emit ([ "one", "two", " 3 "], 박사); 보기를 검색 할 때 순서가 중요하지만 때때로보기에서보기를 무시하고 싶습니다. 나는 두 가지 옵션을 생각해 보았다. 1. 규칙에 따라 내용을 사전 순으로 내보내고 찾고있는 것이 동일한 규칙을 사용하는지 확인하십시오. 2. 순서를 무시하고 해시를 기반으로 검색/검색하는 방식으로 해시를 처리합니다. (간단히 각각의 해시를 개별적으로 해시하고 해시를 "합"한 다음 mod를 사용하면 매우 쉽습니다.) 참고 : 권위있는 가이드 어딘가에이 내용이 포함될 수 있지만 확신 할 수 없었습니다.배열 요소의 순서가 무시되도록 배열 된 조회 키를 사용하여 CouchDB를 내 보냅니다.
답변
올바른 방법은 키에 대한 일반적인 순서를 결정한 다음이 순서대로 내 보내어이 주문을 적용하여 쿼리해야합니다. 그렇지 않으면 키의 모든 n (계승) 순열을 방출해야합니다 (n이 3보다 큰 경우 나쁠 수 있음)
CouchDB는 항상 배열 키를 순서대로 유지합니다. 보기의 일부로 모든 시퀀스 변형을 방출하는 것으로 생각하십니까?
function(doc) {
function computeAllKeyVariations(fromKey) {
// returns array of key arrays
}
var allKeys = computeAllKeyVariations(startingKey);
for (k in allKeys) {
emit(k, doc); // or emit(k, null)
}
}
사이드 참고 :의 라인을 따라 뭔가 당신은 대신 문서를 방출의 emit(['one','two','three'], null)
를 사용하는 옵션이 있습니다. 이렇게하면 CouchDB가 전체 문서를 뷰 인덱스에 두 번 이상 저장하는 것을 피할 수있다. 이전과 같은 결과를 얻으려면 &include_docs=true
이 접근법에 대한 우려는 뷰의 크기입니다. 방출 된 필드의 수는 디스크의 크기와 직접 관련이 있으며 조합 수는 (2^n) -1입니다. – majelbstoat
사실, 여기에 내 대답을 받아들이는 것을 싫어 하겠지만 실제로는 n (계승)이됩니다. 나는 순서를 무시하고 정체성을 원하기 때문에 각 순열을 내야 할 것입니다. 나는 여기서 올바른 대답은 단지 순서를 만들고, 그 규칙을 기반으로 일관되게/질의를 내 보낸다라고 생각한다. 그러나 덜 루스의 공로로, 그는 하나 또는 두 가지 다른 방법과 같이 주요 순서를 나타낼 수있는 방법이 제한되어 있다고 생각할 수도 있습니다. 그럴 경우는 아니지만 모든 주문을 지원해야하므로 답변을 좋아합니다. – MatternPatching
충분히 공정하게 작성하십시오. 당신의 예제에서 요구되는 6 개의 순열을 방출해도 키의 요소가 매우 자주 변경되지 않는다면 나에게는 매우 비싸지 않습니다. –
- 1. 연관 배열 키를 그룹화하는 순서가 같습니다.
- 2. 값이있는 키를 내 보냅니다.
- 3. 메모리의 연관 배열 조회
- 4. 배열 색인 조회 대 인스턴스 필드 조회
- 5. 배열 키를 얻는 자바
- 6. 배열 키를 주문 하시겠습니까?
- 7. PHP - 내 배열 및 배열
- 8. 키를 사용하여 무작위 배열 셔플이 필요합니다.
- 9. jQuery를 사용하여 일치하는 요소의 특성 ar 배열
- 10. PHP에서 특정 키를 사용하여 배열 만들기
- 11. PHP에서 배열 키를 숫자로 변경
- 12. 배열 배열 정렬 [] 배열
- 13. 배열 요소의 주소 가져 오기
- 14. 모든 배열 요소의 유형 검사
- 15. 인쇄 연관 배열 요소의 하나는
- 16. 배열, 키를 통해 정렬해야 함
- 17. PHP 배열 키를 따옴표로 묶어야합니까?
- 18. VALUE에서 배열 키를 얻는 방법?
- 19. 동적으로 생성 된 배열
- 20. 포인터 배열 배열
- 21. 배열 배열 키를 다시 배열하여 연관 배열로 변환하는 방법은 무엇입니까?
- 22. C에서 개발 된 COM에서 배열 반환 배열
- 23. 내 페이지에서 배열
- 24. 배열 요소의 XML serializer 요소 이름 변경
- 25. Python np 배열 배열 배열
- 26. 배열 객체의 키를 가져 오는 방법은 무엇입니까?
- 27. 배열
- 28. 배열 배열 - 파일에 문제가
- 29. curl_setopt를 사용하여 배열 게시
- 30. Python이 창문에 키를 보냅니다.
이것을 답으로 선택하면 다른 방법으로 제공 할 couchdb 기능을 아는 사람이 있는지 다시 확인합니다. – MatternPatching
키에 "정렬되지 않은 배열 요소"를 허용하면 group_level http://wiki.apache.org/couchdb/Introduction_to_CouchDB_views#Grouping을 사용할 수 없기 때문에 이것은 가장 적합합니다. –