对来自Firebase Firestore Android

时间:2019-04-21 00:08:23

标签: 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

1 个答案:

答案 0 :(得分:0)

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

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