연산자(Operators)

개요

연산자 종류

  1. 산술 연산자
  2. 컬렉션 연산자
  3. 비교 연산자
  4. 조건 연산자
  5. 생성 연산자
  6. 논리 연산자
  7. 중첩 연산자와 표현식
  8. 문자열 연산자

연산 우선 순위

  1. CASE
  2. .
  3. []
  4. -(unary, 단항)
  5. *, /, %
  6. +, -
  7. IS
  8. IN
  9. BETWEEN
  10. LIKE
  11. <, <=, >, =>
  12. =, ==, <>, !=
  13. NOT
  14. AND
  15. OR

산술 연산자

컬렉션 연산자

ANY

ARRAY

문법

ARRAY var1 FOR var1 ( IN | WITHIN ) expr1
   [ ,  var2 ( IN | WITHIN ) expr2 ]*
   [ ( WHEN cond1 [ AND cond2 ] ) ] END
SELECT
    ARRAY
        FOR
            var1 IN sb.arr1,
            var2 WITHIN sb.arr2,
            var3 IN sb.arr3
        WHEN
            var1.some.field = '<condition>' AND
            var2.some.arr[0] > '<condition>' AND
            var3.what < '<condition>'
    END
FROM some_bucket sb
인자
반환

에제1

Query
SELECT
    ARRAY v FOR v IN usr.shipped_order_history WHEN v.order_datetime > 'Thu Aug  4 22:00:09 2011' END AS arrfor
FROM users_with_orders usr
USE KEYS "Elinor_33313792"
Result
{
  "results": [
    {
      "arrfor": [
        {
          "order_datetime": "Wed May 30 22:00:09 2012",
          "order_id": "T103929516925"
        }
      ]
    }
  ]
}

예제2

Query
SELECT ARRAY v FOR v IN schedule WHEN v.utc > "19:00" AND v.day = 5 END AS fri_evening_flights
FROM `travel-sample`
WHERE
    type="route" AND
    airline="KL" AND
    sourceairport="ABQ" AND
    destinationairport="ATL" AND
    ANY v IN schedule SATISFIES v.utc > "19:00" END;
FROM
SELECT
Result
[
  {
    "fri_evening_flights": [
      {
        "day": 5,
        "flight": "KL169",
        "utc": "23:41:00"
      }
    ]
  }
]

예제3

Query
SELECT *
FROM users_with_orders usr
USE KEYS "Elinor_33313792"
WHERE ANY v IN usr.shipped_order_history SATISFIES v.order_datetime > 'Thu Aug  4 22:00:09 2011' END
FROM
USE KEYS
WHERE
SELECT
Result
{
  "results": [
    {
      "usr": {
        "doc_type": "user_profile",
        "personal_details": {
          "age": 60,
          "display_name": "Elinor Ritchie",
          "email": "Elinor.Ritchie@snailmail.com",
          "first_name": "Elinor",
          "last_name": "Ritchie",
          "state": "Arizona"
        },
        "profile_details": {
          "last_login_time": "Wed Jan 16 22:00:09 2013",
          "loyalty": {
            "friends_referred": [],
            "loyalty_score": 7.44363933614319,
            "membership_type": "Gold",
            "redeemed_points": 903,
            "reward_points": 2016
          },
          "password": "Elinor73",
          "prefs": {
            "promotion_email": false,
            "ui_language": "English",
            "ui_theme": "Beach"
          },
          "user_creation_time": "Tue May 31 22:00:09 2011",
          "user_id": "Elinor_33313792"
        },
        "search_history": [
          {
            "category": "Films",
            "sub-category": [
              "Foreign Films",
              "Drama",
              "Sci-Fi, Fantasy & Horror"
            ]
          },
          {
            "category": "Books",
            "sub-category": ["Humor"]
          }
        ],
        "shipped_order_history": [
          {
            "order_datetime": "Wed May 30 22:00:09 2012",
            "order_id": "T103929516925"
          },
          {
            "order_datetime": "Thu Aug  4 22:00:09 2011",
            "order_id": "T573145204032"
          }
        ]
      }
    }
  ]
}

예제4

Query
SELECT
    ARRAY v FOR v IN usr.shipped_order_history END AS arrfor
FROM users_with_orders usr
USE KEYS "Elinor_33313792"
WHERE
    ANY v IN usr.shipped_order_history SATISFIES v.order_datetime > 'Thu Aug  4 22:00:09 2011' END
FROM
USE KEYS
WHERE
SELECT
Result
{
  "results": [
    {
      "arrfor": [
        {
          "order_datetime": "Wed May 30 22:00:09 2012",
          "order_id": "T103929516925"
        },
        {
          "order_datetime": "Thu Aug  4 22:00:09 2011",
          "order_id": "T573145204032"
        }
      ]
    }
  ]
}

예제5

Query
SELECT
    ARRAY v FOR v IN usr.shipped_order_history WHEN v.order_datetime > 'Thu Aug  4 22:00:09 2011' END AS arrfor
FROM users_with_orders usr
USE KEYS "Elinor_33313792"
WHERE ANY v IN usr.shipped_order_history SATISFIES v.order_datetime > 'Thu Aug  4 22:00:09 2011' END
FROM
USE KEYS
WHERE
SELECT
Result
{
  "results": [
    {
      "arrfor": [
        {
          "order_datetime": "Wed May 30 22:00:09 2012",
          "order_id": "T103929516925"
        }
      ]
    }
  ]
}

EVERY

EXISTS

FIRST

IN

WITHIN