2015-02-04 3 views
0

저는 CouchBase를 처음 사용하고 있으며 소셜 네트워크를 확장 할 수있는 솔루션을 찾고 있습니다. Couchbase는 더 재미있어 보이며 특히 기능을 쉽게 확장 할 수 있습니다.여러 WHERE 및 OR 절을 사용하여 Couchbase에서 뷰를 만드는 방법

하지만 특정 종류의 문서에 대한보기를 만드는 데 어려움을 겪고 있습니다.

내 문서는 다음과 같습니다 :이 SQL 쿼리에 해당 될 전망입니다 내가 무엇을 찾고 있어요

{ 
"id": 9476182, 
"authorid": 86498, 
"content": "some text here", 
"uid": 41, 
"accepted": "N", 
"time": "2014-12-09 09:58:03", 
"type": "testimonial" 
} 
{ 
"id": 9476183, 
"authorid": 85490, 
"content": "some text here", 
"uid": 41, 
"accepted": "Y", 
"time": "2014-12-09 10:44:01", 
"type": "testimonial" 
} 

. WHERE 버킷 FROM

SELECT * (UID = '$ UID와'AND 허용 = 'Y') OR (UID = '$ UID와'AND authorid = '$의 logginid')

이 방법 회원 평가 페이지를 보는 사용자가 회원 평가 페이지의 소유자이거나, 그렇지 않은 경우 모든 주어진 사용자의 사용 후기가 수락 된 경우 == "Y"이고 추천 수를 표시하지 않으면 모든 사용자의 회원 평가를 승인 할 수 있습니다. 아직 승인되었지만 페이지를보고있는 사용자가 작성했습니다.

이 문제에 대한 조언을 주시면 감사하겠습니다.

답변

0

SQL과 달리 입력 매개 변수를 뷰에 직접 전달할 수는 없습니다. 그러나 수 있습니다 범위 필터링하여 어느 정도 이것을 에뮬레이션합니다.

SQL과 정확히 일치하지는 않지만 단순히 사용자 ID를 기준으로 사용자 후기를 필터링 한 다음 클라이언트 측에서 필터링하는 것이 좋습니다. 나는 대부분의 경우 보류중인 평가가 없기 때문에 많은 불필요한 데이터로 끝나지 않을 것이라는 가정을하고 있습니다. 이 전적 사용하여보기를 필터링 할 수 있습니다

참고 그러나 그것은 필요 :

  • 큰 키 또는
  • 여러보기 또는
  • 여러 쿼리 일반적으로

그것을 방출 된 키를 작게 만들면 성능이 향상되므로 권장됩니다. 위에서 언급 한 솔루션을 사용하는 것이 좋습니다.

관련 문제