提供意見
StructuredQuery
透過集合功能整理內容
你可以依據偏好儲存及分類內容。
領域 select
object ( Projection
)
要傳回的欄位的可選子集。
這充當查詢返回的文檔的DocumentMask
。如果未設置,則假定呼叫者希望傳回所有欄位。
from[]
object ( CollectionSelector
)
要查詢的集合。
where
object ( Filter
)
要套用的過濾器。
orderBy[]
object ( Order
)
應用於查詢結果的順序。
Firestore 允許呼叫者提供完整排序、部分排序或完全不排序。在所有情況下,Firestore 透過以下規則保證穩定的排序:
orderBy
需要引用與不等式過濾器一起使用的所有欄位。 所有需要在orderBy
中但尚不存在的欄位都將按欄位名稱的字典順序附加。 如果未指定__name__
上的順序,則預設會附加該順序。 欄位附加的排序方向與最後指定的順序相同,如果未指定順序,則附加「升序」。例如:
ORDER BY a
變成ORDER BY a ASC, __name__ ASC
ORDER BY a DESC
變成ORDER BY a DESC, __name__ DESC
WHERE a > 1
變成WHERE a > 1 ORDER BY a ASC, __name__ ASC
WHERE __name__ > ... AND a > 1
變成WHERE __name__ > ... AND a > 1 ORDER BY a ASC, __name__ ASC
startAt
object ( Cursor
)
結果集中開始查詢的位置的潛在前綴。
結果集的排序是基於原始查詢的ORDER BY
子句。
SELECT * FROM k WHERE a = 1 AND b > 2 ORDER BY b ASC, __name__ ASC;
此查詢的結果依(b ASC, __name__ ASC)
排序。
遊標可以引用完整的排序或位置的前綴,但它不能引用比提供的ORDER BY
中的欄位更多的欄位。
繼續上面的範例,附加以下啟動遊標將產生不同的影響:
START BEFORE (2, /k/123)
:在a = 1 AND b > 2 AND __name__ > /k/123
前開始查詢。 START AFTER (10)
:在a = 1 AND b > 10
之後立即開始查詢。 與需要掃描前 N 個結果以跳過的OFFSET
不同,起始遊標允許查詢從邏輯位置開始。該位置不需要與實際結果匹配,它將從此位置向前掃描以查找下一個文件。
要求:
值的數量不能大於ORDER BY
子句中指定的字段數。 endAt
object ( Cursor
)
結果集中結束查詢的位置的潛在前綴。
這與START_AT
類似,但它控制結束位置而不是開始位置。
要求:
值的數量不能大於ORDER BY
子句中指定的字段數。 offset
integer
傳回第一個結果之前要跳過的文件數。
這適用於WHERE
、 START AT
和END AT
指定的約束之後但LIMIT
子句之前。
要求:
limit
integer
要傳回的最大結果數。
在所有其他約束之後適用。
要求:
投影 領域 fields[]
object ( FieldReference
)
要傳回的欄位。
如果為空,則傳回所有欄位。若要僅傳回文件的名稱,請使用['__name__']
。
集合選擇器 JSON 表示 {
"collectionId" : string ,
"allDescendants" : boolean
}
領域 collectionId
string
集合 ID。設定後,僅選擇具有此 ID 的集合。
allDescendants
boolean
如果為 false,則僅選擇作為包含的RunQueryRequest
中指定的parent
的直接子級的集合。如果為 true,則選擇所有後代集合。
篩選 JSON 表示 {
// Union field filter_type
can be only one of the following:
"compositeFilter" : {
object (CompositeFilter
)
} ,
"fieldFilter" : {
object (FieldFilter
)
} ,
"unaryFilter" : {
object (UnaryFilter
)
}
// End of list of possible types for union field filter_type
.
}
領域 聯合字段filter_type
。過濾器的類型。 filter_type
只能是以下其中之一: compositeFilter
object ( CompositeFilter
)
複合過濾器。
fieldFilter
object ( FieldFilter
)
文檔字段上的過濾器。
unaryFilter
object ( UnaryFilter
)
一種只接受一個參數的過濾器。
複合過濾器 領域 op
enum ( Operator
)
用於組合多個過濾器的運算子。
filters[]
object ( Filter
)
要組合的過濾器清單。
要求:
操作員 列舉 OPERATOR_UNSPECIFIED
未指定。不得使用該值。 AND
需要文件來滿足所有組合過濾器。 OR
文件需要滿足至少一個組合過濾器。
操作員 列舉 OPERATOR_UNSPECIFIED
未指定。不得使用該值。 LESS_THAN
給定field
小於給定value
。
要求:
LESS_THAN_OR_EQUAL
給定field
小於或等於給定value
。
要求:
GREATER_THAN
給定field
大於給定value
。
要求:
GREATER_THAN_OR_EQUAL
給定field
大於或等於給定value
。
要求:
EQUAL
給定field
等於給定value
。 NOT_EQUAL
給定field
不等於給定value
。
要求:
沒有其他NOT_EQUAL
、 NOT_IN
、 IS_NOT_NULL
或IS_NOT_NAN
。 該field
在orderBy
中排在第一位。 ARRAY_CONTAINS
給定field
是包含給定value
的陣列。 IN
給定field
至少等於給定數組中的一個值。
要求:
該value
是一個非空ArrayValue
,受析取限制。 同一查詢中沒有NOT_IN
過濾器。 ARRAY_CONTAINS_ANY
給定field
是一個數組,其中包含給定數組中的任何值。
要求:
該value
是一個非空ArrayValue
,受析取限制。 同一析取內沒有其他ARRAY_CONTAINS_ANY
過濾器。 同一查詢中沒有NOT_IN
過濾器。 NOT_IN
該field
的值不在給定數組中。
要求:
該value
是一個非空ArrayValue
,最多包含 10 個值。 沒有其他OR
、 IN
、 ARRAY_CONTAINS_ANY
、 NOT_IN
、 NOT_EQUAL
、 IS_NOT_NULL
或IS_NOT_NAN
。 該field
在orderBy
中排在第一位。
一元過濾器 JSON 表示 {
"op" : enum (Operator
) ,
// Union field operand_type
can be only one of the following:
"field" : {
object (FieldReference
)
}
// End of list of possible types for union field operand_type
.
}
領域 op
enum ( Operator
)
要套用的一元運算子。
聯合字段operand_type
。過濾器的參數。 operand_type
只能是以下其中之一: field
object ( FieldReference
)
要套用運算符的欄位。
操作員 列舉 OPERATOR_UNSPECIFIED
未指定。不得使用該值。 IS_NAN
給定field
等於NaN
。 IS_NULL
給定field
等於NULL
。 IS_NOT_NAN
給定field
不等於NaN
。
要求:
沒有其他NOT_EQUAL
、 NOT_IN
、 IS_NOT_NULL
或IS_NOT_NAN
。 該field
在orderBy
中排在第一位。 IS_NOT_NULL
給定field
不等於NULL
。
要求:
單一NOT_EQUAL
、 NOT_IN
、 IS_NOT_NULL
或IS_NOT_NAN
。 該field
在orderBy
中排在第一位。
方向 列舉 DIRECTION_UNSPECIFIED
未指定。 ASCENDING
上升。 DESCENDING
下降。
提供意見
除非另有註明,否則本頁面中的內容是採用創用 CC 姓名標示 4.0 授權 ,程式碼範例則為阿帕契 2.0 授權 。詳情請參閱《Google Developers 網站政策 》。Java 是 Oracle 和/或其關聯企業的註冊商標。
上次更新時間:2023-12-01 (世界標準時間)。
[{
"type": "thumb-down",
"id": "missingTheInformationINeed",
"label":"缺少我需要的資訊"
},{
"type": "thumb-down",
"id": "tooComplicatedTooManySteps",
"label":"過於複雜/步驟過多"
},{
"type": "thumb-down",
"id": "outOfDate",
"label":"過時"
},{
"type": "thumb-down",
"id": "translationIssue",
"label":"翻譯問題"
},{
"type": "thumb-down",
"id": "samplesCodeIssue",
"label":"示例/程式碼問題"
},{
"type": "thumb-down",
"id": "otherDown",
"label":"其他"
}]
[{
"type": "thumb-up",
"id": "easyToUnderstand",
"label":"容易理解"
},{
"type": "thumb-up",
"id": "solvedMyProblem",
"label":"確實解決了我的問題"
},{
"type": "thumb-up",
"id": "otherUp",
"label":"其他"
}]
想進一步說明嗎?