Функция запроса для отдельного результата в firestore

Есть ли какая-либо функция запроса, чтобы получить отличный результат в firestore.

Например:

Query query = colRef.orderBy("title")
                        .startAt("R")
                        .limit(10);

Это дает мне все документы с «заголовком», начинающимся с «R», которые содержат такие дубликаты:

Recording
Running
Running
Running

Как я могу получить отличный результат, подобный этому:

Recording
Running

person Mahmudul Hasan Shohag    schedule 18.12.2017    source источник
comment
Возможный дубликат stackoverflow.com/questions/35170616/   -  person Ramesh sambu    schedule 18.12.2017
comment
Вовсе не дубликат - база данных Firestore и Firebase Realtime (о которой другой пост спрашивает в зависимости от контекста) - это не одно и то же.   -  person Mike Burton    schedule 21.12.2020


Ответы (1)


К сожалению, в Cloud Firestore нет метода distinct(). Поскольку вы упорядочиваете свои данные по title, что является ключом в каждом дочернем элементе, это возможно. Чтобы запросить вашу базу данных и получить только элементы distnict, вам нужно придумать другое решение, которое будет заключаться в создании еще одного узла с именем distinctTitles, в который вам нужно добавить все эти заголовки. Чтобы избежать дублирования элементов (переопределения данных), сначала необходимо проверить наличие uniqueness с помощью exists() следующим образом:

DocumentReference docRef = db.collection("distinctTitles").document("titleToCheck");
docRef.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
    @Override
    public void onComplete(@NonNull Task<DocumentSnapshot> task) {
        if (task.exists()) {
            //Do something
        } else {
            //Do something else
        }
    }
});
person Alex Mamo    schedule 18.12.2017
comment
Для этого вы можете изучить функцию firebase, если вы используете firebase для нескольких платформ, это может быть лучшим выбором для реализации такого рода функций. - person Sébastien REMY; 29.01.2020
comment
Привет Махмудул! Могу ли я помочь вам с другой информацией? Если вы считаете, что мой ответ помог вам, рассмотрите возможность его принятия (✔️). Я был бы очень признателен. Спасибо! - person Alex Mamo; 13.07.2021