2011-10-12 2 views
0

나는 couch db가있는 간단한 데이터베이스가 있습니다. 사용자에게 해당 필드가 있습니다.지도 축소 소파 Db

String userName 
String password 
String mail 
boolean admin 

저는 사용자를 db로 유지합니다. 그러나 저는 Couch DB와 NoSql에 대한 새로운 경험을 가지고 있습니다. 예제를 사용하여 맵 축소를 구현할 수 있습니까? (또는 내부적으로 수행 할 것이므로 아무 것도 할 필요가 없습니다.)

응용 프로그램에 Spring 3 및 Ekorp를 사용합니다. 지도 기능이 될 수 소파에

답변

0

,

또는

type_

_type

라는 문서에 필드를 추가

function(doc) { 
if(doc.type_=="user") { 
    emit(doc.name,doc._id); 
} 
} 
1

귀하의 질문에 좀 더 자세히 설명해 드리 겠지만 이해할 수 있도록 사용자의 "테이블"처럼 작동하는 Couch DB 문서를 만들고 싶습니다. 이를 위해 다음과 같은 속성을 사용하여 소파 DB에 JSON 문서를 작성해야합니다

{ 
    type: "user", 
    username: "John", 
    password: "*****", 
    mail: "blah, blah, blah", 
    admin: true 
} 

lukecampbell 위에서 지적했던 것처럼, 각을 식별하기 위해 자신의 "유형"속성을 만들어야합니다 엔티티 ... 예를 들어, 오히려 권한으로 사용자를 식별하기 위해 관리자 속성을 사용하는 것보다, 그냥 "유형"속성을 변경할 수 있습니다 :

{ 
    type: "admin"... 
} 

데이터베이스를 조회하고, 특정 문서를 검색하려면를, 다음이 필요합니다 맵 기능을 사용합니다.

function(doc){ 
    if(doc.type == "user"){ 
     emit(doc.name, doc); 
    } 
} 

이 '쿼리'당신에게 "doc.name"주문한 모든 "사용자"엔티티 문서의 "보기"를 줄 것이다 : 다시의 lukecampbell의 예는 좋은 출발점을 제공합니다. 여기 Couch DB의 아름다움이 분명해집니다 ...지도 (및 축소) 함수는 특정 의미의 SQL 쿼리와 비슷하지만 JavaScript로 작성 되었기 때문에 JavaScript 로직을 사용하여 데이터베이스를 형성 할 수 있습니다.

function(doc){ 
    if(doc.type == "user" && doc.name == "John"){ 
     emit(doc.name, doc); 
    } 
} 

이렇게하면 사용자 이름이 John 인 모든 "사용자"문서를 볼 수 있습니다. 어떤 경우에는 이러한 방식으로 쿼리를 작성하는 것이 SQL보다 훨씬 표현력이 풍부 할 수 있습니다. 이런 방식으로 문서 필드를 "도킹"하는 것도 가능합니다.

function(doc){ 
    if(
     doc.type == "user" && 
     typeof doc.admin == "boolean" 
    ){ 
     emit(doc.name, "Is Admin?: " + JSON.stringify(doc.admin); 
    } 
} 

이 "질의"각 "사용자"과 약간의 상태 메시지의 이름을 인쇄해야하는 관리자를위한 부울 값으로 모든 사용자 문서 (")? : 관리자 참 (또는 거짓이다") 재산. "Reduce"기능은 매우 유용하지만 매우 유용하기 때문에 맵 기능을 완전히 이해하는 것이 훨씬 더 중요합니다. 그리고 대부분의 경우 잘 작성된 맵 기능을 사용하면 "reduce"기능을 작성할 필요가 없습니다 ...

Couch DB에 잠재력이 있습니다.이 사이트는 아마도 시작하기에 가장 좋은 장소 일 것입니다. http://guide.couchdb.org/index.html - 말했다, 때때로 당신은 당신의 데이터베이스 디자인을 재고 강제 기술에서 매우 이상한 단점도 있습니다 ... 그 단점 중 하나는 여기에 간략하게 설명되어 있습니다 (빅터 니콜의 답변을 참조)

Is there anything wrong with creating Couch DB views with null values?

관련 문제