java - 对 Firebase Firestore Android 中的数据执行添加/操作

标签 java android firebase google-cloud-firestore

我正在从 Firestore 检索数据,其中每个文档存储 2 个字段,一个是日期,另一个是秒。我想对数据进行分组,以便将每个日期的秒数相加。

例如,我有 3 个文档,其中 2 个文档的日期相同但秒数不同:

date: 21-04-2019, 
timeTrained: 86

第二个文档:

date: 21-04-2019, 
timeTrained: 24

第三个文档:

date: 20-04-2019, 
timeTrained: 120

所以我想在第一个和第二个文档中添加timeTrained,因为它们具有相同的日期,我的 Firestore 集合中将有许多这样的文档,所以我需要它是动态的而不是硬编码的。

下图提供了 Firestore 中存储的数据的快照。

image of firestore db

最佳答案

要解决此问题,请使用以下代码行:

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

关于java - 对 Firebase Firestore Android 中的数据执行添加/操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55778794/

相关文章:

java - 即使未在构建方法中声明变量,setState 也不会更新 UI

java - 线程安全的 LRU 缓存实现

java - 递归移动目录并在Java中合并它们的有效方法

java - 如何调用咨询结果并将其放入文本字​​段? mysql+Java

Firebase 查询使用 . equalTo( bool 值,字符串键)不起作用

android - fragment 中的 ViewPager

java - 从列表中获取值的最佳编程实践

android - 我在哪里? - 获取国家

Android Google Map 和 firebase 依赖问题

来自 OAuth2 playground 的 Firebase 不记名 token