簡體   English   中英

FireStore查詢如何從數據庫中查詢到arrays

[英]FireStore query how to query arrays from the database

我正在嘗試查詢數據庫以獲取包含具有 userid 和 id 的數組的特定文檔

const userChatQuery = query(collectionGroup(db, userchat), where(user, 'array-contains', [userId, id]));

我想檢索包含包含這兩個 id 字符串的數組的文檔,無論順序如何,但它們必須包含這兩個字符串。

最好的方法是go一下嗎?

使用單個查詢無法實現您所描述的內容。

首先,array-contains 只接受單個值作為參數,而不是要查找的 arrays 個值。 它的目的是找到匹配文檔,其中一個值是指定數組字段的一個元素。

如果您可以假設數組只能有兩個值,並且這些值只能以相同的順序出現,那么您可能能夠在給定您要查找的確切數組的情況下執行簡單的相等性過濾器。 只需向查詢提供您要查找的確切數組。

如果您不能做出這些假設,您可以嘗試兩個包含數組的查詢,一個用於每個 ID 字符串,然后檢查兩個查詢的結果以找出它們重疊的地方。

但是,老實說,您最好重構數據庫,根本不要使用 arrays。 如果您有具有明確目的的值,則它們根本不應該在數組中。 它們應該是您可以正常過濾的單獨字段。 您正在使用 arrays 處理此數據,這對我來說似乎真的很奇怪。 您現在擁有的數據建模根本不能滿足您的查詢要求,這是使用 NoSQL 類型數據庫時的主要問題。 使用 NoSQL,您通常會先弄清楚您希望如何查詢數據,然后 model 您的數據才能滿足這些要求。

暫無
暫無

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

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