Выполнить добавление / операцию с данными из Firebase Firestore Android - PullRequest
1 голос
/ 21 апреля 2019

Я получаю данные из Firestore, где каждый документ хранит 2 поля, одно из которых является датой, а другое - секундами.Я хочу сгруппировать данные так, чтобы секунды складывались для каждой даты.

Например, у меня есть 3 документа и 2 с одинаковыми датами, но разными секундами:

date: 21-04-2019, 
timeTrained: 86

2-й документ:

date: 21-04-2019, 
timeTrained: 24

3-й документ:

date: 20-04-2019, 
timeTrained: 120

Поэтому я хотел бы добавить timeTrained в первый и второй документы, поскольку они имеют одинаковую дату, у меня будет много таких документов в моей коллекции Firestore, поэтому мне нужно, чтобы это было динамическим, а не сложнымзакодированы.

Изображение ниже, чтобы предоставить снимок данных, хранящихся в Firestore.

image of firestore db

1 Ответ

0 голосов
/ 22 апреля 2019

Чтобы решить эту проблему, используйте следующие строки кода:

FirebaseFirestore rootRef = FirebaseFirestore.getInstance();
CollectionReference userExercisesRef = rootRef.collection("userExercises");
Query query = userExercisesRef.whereEqualTo("date", "21-04-2019");
query.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
    @Override
    public void onComplete(@NonNull Task<QuerySnapshot> task) {
        if (task.isSuccessful()) {
            long count = 0;
            for (QueryDocumentSnapshot document : task.getResult()) {
                long timeTrained = document.getLong("timeTrained");
                count = count + timeTrained;
            }

            Log.d(TAG, String.valueOf(count));
        }
    }
});

Согласно предоставленным вами данным, для 21-04-2019 результат в вашем logcat будет:

110
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...