CASE
.
[]
-
(unary, 단항)*
, /
, %
+
, -
IS
IN
BETWEEN
LIKE
<
, <=
, >
, =>
=
, ==
, <>
, !=
NOT
AND
OR
ANY
ARRAY
WHEN
절이 제공될 경우 WHEN
절을 만족하는, 연산되는 표현식(operand expression)의 배열ARRAY
`FOR` `IN` 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
ARRAY
반복문에서 변수명을 나타내는 문자열 또는 표현식ARRAY
표현식을 만족함 → 배열 또는 여러 배열ARRAY
표현식을 만족하지 않음 → 배열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"
{
"results": [
{
"arrfor": [
{
"order_datetime": "Wed May 30 22:00:09 2012",
"order_id": "T103929516925"
}
]
}
]
}
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
type="route
: 컬렉션의 타입이 routeairline="KL"
: KL 항공사sourceairport="ABQ"
: 출발지가 Albuquerquedestinationairport="ATL"
: 목적지가 AtlantaANY v IN schedule SATISFIES v.utc > "19:00" END
: 저녁 7시 이후인 모든 스케쥴SELECT
ARRAY v FOR v IN schedule WHEN v.utc > "19:00" AND v.day = 5 END
[
{
"fri_evening_flights": [
{
"day": 5,
"flight": "KL169",
"utc": "23:41:00"
}
]
}
]
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
{
"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"
}
]
}
}
]
}
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
ARRAY v FOR v IN usr.shipped_order_history END
{
"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"
}
]
}
]
}
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
ARRAY v FOR v IN usr.shipped_order_history WHEN v.order_datetime > 'Thu Aug 4 22:00:09 2011' END
{
"results": [
{
"arrfor": [
{
"order_datetime": "Wed May 30 22:00:09 2012",
"order_id": "T103929516925"
}
]
}
]
}
EVERY
EXISTS
FIRST
IN
WITHIN