Я использую Firebase Firestore для запроса некоторых документов с определенным идентификатором. Это моя структура:
РЕДАКТИРОВАТЬ: СКРИНШОТ И ОПИСАНИЕ, ДОБАВЛЕННЫЕ ТОЛЬКО ПОСЛЕ ЭТОЙ ЛИНИИ:
generatedId
и id
имеют одинаковое значение. У меня есть список этих «идентификаторов», и я хочу выполнить поиск в коллекции public_messages
, чтобы получить список элементов, которые мне предоставил список «идентификаторов».
root
----- public_messages
---------- generatedId
-------------------- name
-------------------- id
---------- generatedId
-------------------- name
-------------------- id
----- other data
Я использую следующий код для запроса сообщений с определенным идентификатором:
ArrayList<String> keys ... (this has some keys)
CollectionReference collectionReference = firebaseFirestore.collection("public_messages");
for (String id : keys) {
collectionReference.whereEqualTo("id", id);
}
collectionReference.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()) {
int count = 0;
for (QueryDocumentSnapshot document : task.getResult()) {
count++;
}
loog("total messages = " + count);
} else {
Log.d("TAG", "Error getting documents: ", task.getException());
}
}
});
В onComplete
переменная task.getResult()
возвращает все документы в указанной коллекции , Следовательно, переменная count
представляет общее количество документов в указанной коллекции.
Я хочу запрашивать результаты только с указанными идентификаторами. Количество идентификаторов может превышать 10 (это, по-видимому, ограничение, установленное Google, и ограничение, которое я пытался обойти, используя for-l oop). Что мне делать?