Firestore 查詢。
查詢階段的執行順序如下:1. 來自 2.,3. 選取 4. orderBy + startAt + endAt 5. 6. 限制
JSON 表示法 |
---|
{ "select": { object ( |
欄位 | |
---|---|
select |
可傳回欄位的選用子集合。 就像 |
from[] |
要查詢的集合。 |
where |
要套用的篩選器。 |
orderBy[] |
要套用至查詢結果的順序。 Firestore 可讓呼叫端提供完整訂購、部分排序或完全不排序。在所有情況下,Firestore 都會透過下列規則確保以穩定的方式排序:
欄位的排序方向會與最後指定的順序相同,或「ASCENDING」(如果未指定順序)。例如:
|
startAt |
結果集內可能開始查詢的位置前置字元。 結果集的排序依據原始查詢的
這項查詢的結果是按 遊標可以參照完整順序或位置的前置字串,但參照的欄位數量不能超過提供的 延續上述範例,附加以下起始遊標會產生不同的影響:
需要掃描前 N 個結果才能略過,但 需求條件:
|
endAt |
結果集中位置的可能前置字串,查詢結束位置。 這與 需求條件:
|
offset |
傳回第一個結果前略過的文件數量。 此情況會在 需求條件:
|
limit |
要傳回的結果數上限。 在所有其他限制後方套用。 需求條件:
|
findNearest |
選用設定。可能的鄰近地區搜尋。 系統會先套用所有其他篩選器和排序,再套用這項設定。 找出最接近指定查詢向量的向量嵌入。 |
投影
要傳回的文件欄位投影。
JSON 表示法 |
---|
{
"fields": [
{
object ( |
欄位 | |
---|---|
fields[] |
要傳回的欄位。 如果留空,系統會傳回所有欄位。如果只要傳回文件名稱,請使用 |
集合選取器
一個集合,例如 messages as m1
。
JSON 表示法 |
---|
{ "collectionId": string, "allDescendants": boolean } |
欄位 | |
---|---|
collectionId |
集合 ID。設定後,請只選取具備這個 ID 的集合。 |
allDescendants |
設為 false 時,僅選取所屬 |
篩選器
篩選器。
JSON 表示法 |
---|
{ // Union field |
欄位 | |
---|---|
聯集欄位 filter_type 。篩選器類型。filter_type 只能採用下列其中一種設定: |
|
compositeFilter |
複合篩選器。 |
fieldFilter |
文件欄位的篩選器。 |
unaryFilter |
僅使用一個引數的篩選器。 |
CompositeFilter
使用指定運算子合併多個其他篩選器的篩選器。
JSON 表示法 |
---|
{ "op": enum ( |
欄位 | |
---|---|
op |
用於合併多個篩選器的運算子。 |
filters[] |
要合併的篩選器清單。 需求條件:
|
運算子
複合篩選器運算子。
列舉 | |
---|---|
OPERATOR_UNSPECIFIED |
未指定。不能使用這個值。 |
AND |
文件須符合所有合併的篩選條件。 |
OR |
文件必須至少符合其中一個合併的篩選條件。 |
欄位篩選器
特定欄位的篩選器。
JSON 表示法 |
---|
{ "field": { object ( |
欄位 | |
---|---|
field |
篩選依據的欄位。 |
op |
要做為篩選依據的運算子。 |
value |
要比較的值。 |
運算子
欄位篩選器運算子。
列舉 | |
---|---|
OPERATOR_UNSPECIFIED |
未指定。不能使用這個值。 |
LESS_THAN |
指定的 需求條件:
|
LESS_THAN_OR_EQUAL |
指定的 需求條件:
|
GREATER_THAN |
指定的 需求條件:
|
GREATER_THAN_OR_EQUAL |
指定的 需求條件:
|
EQUAL |
指定的 field 等於指定的 value 。 |
NOT_EQUAL |
指定的 需求條件:
|
ARRAY_CONTAINS |
指定的 field 是包含指定 value 的陣列。 |
IN |
指定的 需求條件:
|
ARRAY_CONTAINS_ANY |
指定的 需求條件:
|
NOT_IN |
需求條件:
|
一元篩選器
使用單一運算元的篩選器。
JSON 表示法 |
---|
{ "op": enum ( |
欄位 | |
---|---|
op |
要套用的一元運算子。 |
聯集欄位 operand_type 。篩選器的引數。operand_type 只能採用下列其中一種設定: |
|
field |
要套用運算子的欄位。 |
運算子
一元運算子。
列舉 | |
---|---|
OPERATOR_UNSPECIFIED |
未指定。不能使用這個值。 |
IS_NAN |
指定的 field 等於 NaN 。 |
IS_NULL |
指定的 field 等於 NULL 。 |
IS_NOT_NAN |
指定的 需求條件:
|
IS_NOT_NULL |
指定的 需求條件:
|
順序
欄位順序。
JSON 表示法 |
---|
{ "field": { object ( |
欄位 | |
---|---|
field |
要排序的欄位。 |
direction |
排序依據。預設值為 |
方向
排序方向。
列舉 | |
---|---|
DIRECTION_UNSPECIFIED |
未指定。 |
ASCENDING |
遞增。 |
DESCENDING |
遞減。 |
尋找最近的
「最鄰近項目」搜尋設定。
JSON 表示法 |
---|
{ "vectorField": { object ( |
欄位 | |
---|---|
vectorField |
執行個體類型,要搜尋的已建立索引向量欄位。系統只能傳回維度與 queryVector 相符的向量。 |
queryVector |
執行個體類型,我們所搜尋的查詢向量。必須是不超過 2048 個尺寸的向量。 |
distanceMeasure |
執行個體類型,要使用的距離量,必要項目。 |
limit |
執行個體類型,要傳回的最鄰點數量。必須是不超過 1000 的正整數。 |
距離測量結果
比較向量時使用的距離。
列舉 | |
---|---|
DISTANCE_MEASURE_UNSPECIFIED |
請勿設定。 |
EUCLIDEAN |
測量向量之間的 EUCLIDEAN 距離。請參閱 Euclidean 瞭解詳情 |
COSINE |
依據向量之間的角度比較向量,您就能衡量不是以向量規模為基準的相似度。建議您使用 DOT_PRODUCT 搭配單位正規化向量而不是 COSINE 距離,這在數學上等同於有更好的效能。詳情請參閱餘弦相似度。 |
DOT_PRODUCT |
與餘弦相似,但受到向量的規模影響。詳情請參閱 Dot Product。 |