亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Nosql模型結構

Nosql模型結構

鴻蒙傳說 2023-03-02 15:17:43
您將如何構建您的 Cloud Firestore 數據庫。我有團隊、競技場和游戲的集合:public class Team {    public String name;    public String homeCourtId;}public class Game{    public String matchId;    public String date;    public Arena arena;    public Team homeTeam;    public Team awayTeam;}public class Arena {    public String name;    public String phone;    public String email;    public String address;    public String postalCode;    public String city;    public String district;    public String cordLat;    public String cordLong;}一個團隊可以是游戲中的主隊或客隊,并且游戲總是有一個競技場。所以目前我的想法是構建這個,因為所有游戲都進入游戲集合,當我想找出一個團隊的所有游戲時,我需要查詢游戲集合并找到所選團隊是主隊或客隊的所有游戲。我應該通過 Firestore 生成的 ID 引用團隊,還是應該使用團隊名稱?任何我可以閱讀更多相關信息的指針?他們是在 Firestore 中構建我的數據的更好方法嗎?(或任何 nosql 數據庫)
查看完整描述

1 回答

?
慕運維8079593

TA貢獻1876條經驗 獲得超5個贊

我需要查詢 Games 集合并找到所選球隊是主隊或客隊的所有比賽。

Cloud Firestore 官方文檔對這種查詢非常明確。不幸的是,當涉及到 Firestore 時,有一些查詢限制:

Cloud Firestore 不支持以下類型的查詢:

  • 邏輯或查詢。在這種情況下,您應該為每個 OR 條件創建一個單獨的查詢,并將查詢結果合并到您的應用程序中。

因此,您無法查詢集合以一次性查找所選球隊是主隊或客隊的所有比賽。

一種解決方法是查詢您的數據庫兩次,然后將這些查詢的結果合并到客戶端。它并不完美,因為您需要查詢兩次,但我認為它可以解決問題。

對于 Android,這是您可以在本地合并兩個查詢的方法:

但是,根據 Frank van Puffelen對同一主題的回答:

OR 查詢,因為這些需要跳過索引,這將無法保證性能。請注意,支持可能的 IN 查詢子集的工作正在進行中,以便您可以查詢類似“給我所有供應泰國或意大利美食的餐廳”之類的內容。

您可以等到此功能可用,或者您可以使用我上面的解決方案。

我應該通過 firestore 生成的 ID 引用團隊還是應該使用團隊名稱?

在大多數情況下,我們通常使用用戶 ID 而不是名稱,原因是名稱可以更改而 ID 不能。但由您決定是按名稱搜索還是按 ID 搜索更好。

PS 如果您正在查找而不是"OR"查詢查詢"AND",請注意whereTo()允許鏈接多個調用。


查看完整回答
反對 回復 2023-03-02
  • 1 回答
  • 0 關注
  • 114 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號