사용자 도구

사이트 도구


kb:couchbasen1ql

문서의 이전 판입니다!


Couchbase/N1QL

N1QL 기본 사항 정리

  • 윈도우즈에 설치한 경우, 방화벽을 비활성화해야한다.
    • LCB_NETWORK_ERROR(16)가 나오면 방화벽을 확인해볼 것
    • 설치시 방화벽 해제할 것인지 묻던데, 제대로 되지 않는 모양, 아니면 N1QL 관련 포트를 자동으로 해제하지 않는 걸수도…
    • 어느 포트를 사용하는 건지 체크해 봐야 하는데…

INDEX

PRIMARY INDEX를 생성하지 않은 경우 아무 쿼리도 동작하지 않는다. LCB_HTTP_ERROR랑, 설명에 syntax 어쩌구 나와서 혼란스러웠다.

아래와 같은 구문을 통해 생성할 수 있다. GSI가 뭔지랑, 인덱스 새로 생성하는 건 어찌하는지 조사 필요하다.

CREATE PRIMARY INDEX ON tripod USING GSI

버켓 이름에 하이픈(hyphen, -)이 들어간 경우 백쿼트(`)로 이름을 감싸라는데, 애초에 하이픈을 쓰지 말자.

http://developer.couchbase.com/documentation/server/4.0/n1ql/n1ql-language-reference/createprimaryindex.html

SELECT

-- SELECT
SELECT name, auth
FROM books
 
-- WHERE
SELECT name, auth
FROM books 
WHERE DATE_PART_STR(published, "year") >= 2014
 
-- ORDER BY #1
SELECT name, DATE_PART_STR(published, "year") AS published
FROM books 
WHERE author = "Alastair Reynolds"
ORDER BY published
 
-- DISTINCT
SELECT DISTINCT(series), author 
FROM books
WHERE series IS NOT MISSING
ORDER BY series
 
-- ORDER BY #2
SELECT name, DATE_PART_STR(published, "year") AS published
FROM books 
WHERE series = "Foundation"
ORDER BY YEAR
 
-- GROUP BY
SELECT book, AVG(rating) AS average
FROM reviews
GROUP BY book
HAVING COUNT(*) > 100000
ORDER BY average DESC
 
-- JOIN
SELECT b.name, DATE_PART_STR(a.YEAR, "year") AS YEAR, a.name AS award
FROM awards a INNER JOIN books b
ON KEYS a.book_id
ORDER BY b.name, YEAR, award
 
-- SUBQUERY
SELECT b.name, b.author
FROM books b
WHERE EXISTS (
    SELECT id
    FROM authors
    USE KEYS b.author_id
    WHERE country = "UK")
 
-- UNION
SELECT name, "Book" AS TYPE
FROM books
WHERE favorite = TRUE
UNION ALL (
    SELECT name, "Movie" AS TYPE
    FROM movies
    WHERE favorite = TRUE)
ORDER BY name

C SDK

kb/couchbasen1ql.1444786656.txt.gz · 마지막으로 수정됨: 2015/10/14 10:37 저자 excel96