OFFSET LIMIT (NoSQL 查詢)
適用於:NoSQL
OFFSET LIMIT
子句是選擇性子句,可略過,然後從查詢中取得一些值。 OFFSET
OFFSET LIMIT 子句中需要計數和LIMIT
計數。
搭配 子句使用ORDER BY
時OFFSET LIMIT
,會執行skip並接受已排序的值來產生結果集。 如果未使用子 ORDER BY
句,則會產生具決定性的值順序。
語法
OFFSET <offset_amount> LIMIT <limit_amount>
引數
描述 | |
---|---|
<offset_amount> |
指定查詢結果應跳過的整數項目數量。 |
<limit_amount> |
指定查詢結果應包含的專案整數數目。 |
範例
針對本節中的範例,會使用這個參考集的專案。 每個專案都包含 name
屬性。
[
{
"name": "Sawyer Miller",
"team": "Leadership team"
},
{
"name": "Jennifer Wilkins",
"team": "Leadership team"
},
{
"name": "Hannah Haynes",
"team": "Leadership team"
},
{
"name": "Isaac Talbot",
"team": "Leadership team"
},
{
"name": "Riley Johnson",
"team": "Leadership team"
}
]
注意
在原始 JSON 數據中,不會排序專案。
第一個範例包含查詢,該查詢只會 name
傳回依字母順序排序之所有項目的屬性。
SELECT VALUE {
name: e.name
}
FROM
employees e
WHERE
e.team = "Leadership team"
ORDER BY
e.name
[
{
"name": "Hannah Haynes"
},
{
"name": "Isaac Talbot"
},
{
"name": "Jennifer Wilkins"
},
{
"name": "Riley Johnson"
},
{
"name": "Sawyer Miller"
}
]
下一個範例包含使用 OFFSET LIMIT
子句來略過第一個項目的查詢。 限制會設定為容器中的項目數目,以傳回所有可能的剩餘值。 在此範例中,查詢會略過一個專案,並傳回其餘四個專案(超過五個限制)。
SELECT VALUE {
name: e.name
}
FROM
employees e
WHERE
e.team = "Leadership team"
ORDER BY
e.name
OFFSET 1 LIMIT 5
[
{
"name": "Isaac Talbot"
},
{
"name": "Jennifer Wilkins"
},
{
"name": "Riley Johnson"
},
{
"name": "Sawyer Miller"
}
]
這個最後一個範例包含使用 子句的 OFFSET LIMIT
查詢,藉由略過 一 個專案並擷取下 三個專案來傳回相符專案的子集。
SELECT VALUE {
name: e.name
}
FROM
employees e
WHERE
e.team = "Leadership team"
ORDER BY
e.name
OFFSET 1 LIMIT 3
[
{
"name": "Isaac Talbot"
},
{
"name": "Jennifer Wilkins"
},
{
"name": "Riley Johnson"
}
]
備註
- 在
OFFSET LIMIT
子句中,OFFSET
計數和LIMIT
計數都是必要的。 如果使用選用的ORDER BY
子句,則會藉由對排序的值執行跳過來產生結果集。 否則,查詢會傳回固定的值順序。 - 查詢的 RU 費用隨著
OFFSET LIMIT
位移的字詞數目增加而增加。 如果查詢具有多頁結果,我們通常會建議使用接續權杖。 接續權杖是一種「書籤」,可供之後繼續進行查詢。 如果您使用OFFSET LIMIT
,則沒有 「bookmark」。如果您想要傳回查詢的下一頁,則必須從頭開始。 - 若想完全跳過項目並儲存用戶端資源,應使用
OFFSET LIMIT
。 例如,如果想要跳至第 1000 個查詢結果,而不需要查看第 1 到 999 個結果,則應使用OFFSET LIMIT
。 在後端,OFFSET LIMIT
仍會載入每個專案,包括略過的專案。 藉由避免處理不需要的專案,來測量效能優勢來減少客戶端資源。