簡體   English   中英

如何使用多個`==`s,多個`> =`,多個`<=`范圍過濾器鏈接where子句

[英]How to chain where clause with multiple `==`s , multiple `>=`, multiple `<=` range filters

我需要獲取“事物”的數據:“動物”,“類型”:“哺乳動物”,“ dob”> = startDate和“ dbo” <= endDate

是否可以像ref.where('things', '==', 'Animals').where('type', '==', 'Mammals').where('dob', '>=', startDate).where('dob', '<=', endDate)

范圍過濾器可用於單個==且不超過一個== 可以像上面那樣查詢嗎? 或任何其他替代方法來實現它?

此處的文檔https://firebase.google.com/docs/firestore/query-data/queries

說要將等式與范圍結合起來,您需要創建一個復合索引。

我想您的查詢將起作用,因為您只在一個字段上進行范圍查詢,但是您需要創建一個復合索引來做到這一點。

您可以在這里閱讀有關創建復合索引的更多信息https://firebase.google.com/docs/firestore/query-data/indexing

正如AndrewHill在評論中指出的那樣。 看起來Firestore允許您在第一次嘗試查詢復合索引后自動創建復合索引。 因此,這絕對可以在需要的地方提供幫助。 👍🏻

Cloud Firestore只能將范圍過濾器應用於單個字段,但是可以將相等過濾器應用於多個字段。 有關示例和說明,請參見有關復合查詢文檔

由於唯一的范圍過濾器位於dob ,因此應該可以進行查詢。 您將需要在thingstypedob上定義一個復合索引以允許查詢。 如果您沒有該索引,則Firestore客戶端將在控制台輸出中記錄一個錯誤。 如果單擊該錯誤消息中的鏈接,您將直接進入索引創建屏幕,該表單已填寫了所需索引的正確信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM