귀하의 질문에 좀 더 자세히 설명해 드리 겠지만 이해할 수 있도록 사용자의 "테이블"처럼 작동하는 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?