android Firebase Firestore集合中的最大值

oxcyiej7  于 2023-03-16  发布在  Android
关注(0)|答案(3)|浏览(150)
collection
        *
        Random_Id1
                *amount:100
                *name:John
        Random_Id2
                *amount:150
                *name:Matt
        Random_Id3
                *amount:65
                *name:Alice

我有一个firestore集合,其中有不同的文档。这些文档中有数据(姓名,年龄,金额等)。有没有办法可以返回集合中的最高或最大金额?我在java(android)中实现这一点。在上述结构的情况下,最大值将是150。提前感谢

noj0wjuj

noj0wjuj1#

必须使用通过orderBy()limit()的组合定义的查询,如下所示:

CollectionReference collectionRef = db.collection("collection");
Query query = collectionRef.orderBy("amount", descending: true).limit(1);

请参见此处https://firebase.google.com/docs/firestore/query-data/queries和此处https://firebase.google.com/docs/firestore/query-data/order-limit-data的文档

iq3niunx

iq3niunx2#

在Kotlin中,您可以这样做:

db.collection("collection")
   .orderBy("amount", Direction.DESCENDING).limit(1)
   .get()
   .addOnSuccessListener { documents ->
           //your code, print the highest amount   
   }                
   .addOnFailureListener { exception ->
           Toast.makeText(this, exception.toString(), Toast.LENGTH_LONG).show()
           Log.i("YourActivity",exception.toString())
    }

然后,运行你的项目并触发上面对数据库的调用。你将看到一个吐司,其中包含一个firebase异常消息。转到你的Logcat,用YourActivity类名过滤它,你将看到一个指向Firebase的链接,以便确认你正在创建的这个新索引。等待它建立几分钟,当它的状态为启用时,再次运行你的项目。

jexiocij

jexiocij3#

const maxRef = await db.collection('collection').orderBy('amount', 'desc').limit(1).get();
const dataRef = maxRef.docs? maxRef.docs[0] : null;
console.log(dataRef.data())

参考文献

相关问题