У меня есть коллекция с полем под названием categories
. Который содержит массив объектов ["cat1", "cat2", "cat3", "cat4", "cat5", "cat6", "cat7", "cat8", "cat9", "cat10",
cat11 ]
. (Более 10 категорий в массиве).
При попытке сделать whereArrayContainsAny
выдает ошибку INVALID_ARGUMENT: A maximum of 10 'IN' or 'ARRAY_CONTAINS_ANY' filter values are allowed at once.
Так что я не смогу принять этот массив как этот. Затем я читаю несколько статей, и они говорят, чтобы поддерживать карту данных, таких как,
catagories
|_cat1 : true
|_cat2 : false
|_cat3 : false
Есть ли какие-либо проблемы с производительностью, если я использую этот метод? И есть ли способ использовать тот же метод массива, чтобы выполнять эту фильтрацию, когда категории превышают 10?
То, что я пробовал, это
Firestore db = FIRConnection.initFIRConnection();
// Create a reference to the cities collection
CollectionReference deliveries = db.collection("data");
// Create a query against the collection.
Query query = deliveries.whereArrayContainsAny("categories", Arrays.asList("cat1",
"cat2", "cat3", "cat4", "cat5", "cat6", "cat7", "cat8", "cat9", "cat10", "cat11"));
// retrieve query results asynchronously using query.get()
ApiFuture<QuerySnapshot> querySnapshot = query.get();
for (DocumentSnapshot document : querySnapshot.get().getDocuments()) {
System.out.println(document.get("categories"));
}