[英]Array field Firestore query with prefix
是否可以查詢 Firestore 集合以獲取其數組字段具有特定前綴詞的所有文檔?
例如,
用戶 A uid:uid000 地區列表:[ USA-CA, USA-NY]
用戶 B uid:uid001 地區列表:[ USA-ALL, EU-FR]
用戶 C uid: uid002 地區列表:[ASIA-JP, ASIA-CH]
當從 Firestore 和 select 'USA-' 獲取上面的用戶列表進行過濾時,我想獲取其區域列表甚至包含以 'USA-' 開頭的元素的所有用戶
結果:用戶列表:[用戶A,用戶B]
當從 Firestore 中獲取上面的用戶列表並選擇“USA-”進行過濾時,我想獲取其區域列表甚至包含以“USA-”開頭的元素的所有用戶
不,您不能使用數組來實現。 但是,如果允許稍微更改數據庫結構,則可以獲得相同的結果。 由於USA-
是 arrays 的公共元素,因此您應該考慮這樣命名數組:
Firestore-root
|
--- users (collection)
|
--- uid000 (document)
| |
| --- USA: ["CA", "NY"]
|
--- uid001 (document)
| |
| --- USA: ["ALL"]
| |
| --- EU: ["FR"]
|
--- uid002 (document)
|
--- ASIA: ["JP", "NY"]
要查詢文檔中存在USA
數組的用戶,請使用以下代碼行:
FirebaseFirestore db = FirebaseFirestore.getInstance();
db.collection("products").whereNotEqualTo("USA", null).get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()) {
for (QueryDocumentSnapshot document : task.getResult()) {
Log.d(TAG, document.getId());
}
} else {
Log.d(TAG, "Error getting documents: ", task.getException());
}
}
});
如您所見,我們查詢USA
字段是否存在。 logcat 中的結果將是:
uid000
uid001
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.