我正在为Android编写一个飞行计划器。为了使用某些REST API,我需要每个机场的ICAO标识符。我正在尝试从Firestore提取大约14k的documnet,并将其映射到对象。
我的消防站的结构:
结果是每次我都会得到7698份文档作为回报。
Public Sub SetAppfolders()
Dim nsp As Outlook.NameSpace
Dim objSycs As Outlook.SyncObjects
Dim objSyc As Outlook.SyncObject
Dim mpfInbox As Outlook.Folder
Set nsp = Application.GetNamespace("MAPI")
Set objSycs = nsp.SyncObjects
Set objSyc = objSycs.AppFolders
Set mpfInbox = nsp.GetDefaultFolder(olFolderInbox)
mpfInbox.InAppFolderSyncObject = False
objSyc.Start
End Sub
方法 val db = Firebase.firestore
val airports = db.collection("airport")
val myColl : ArrayList<AirportDAO> = arrayListOf()
val start = System.currentTimeMillis()
var end : Long
airports.get().addOnSuccessListener {
end = System.currentTimeMillis()
Log.d("firebase", (end - start).toString())
val docs = it.documents
Log.d("size", it.size().toString()) // <-- 7698
for (doc in docs) {
val a = doc.toObject(AirportDAO::class.java)
if (a != null)
myColl.add(a)
}
Log.d("size", myColl.size.toString()) // <-- 7698
}
应该返回所有DocumentSnapshots。我没有任何限制吗?
@Edit:我的收藏集结束。 “ Filtruj”在波兰语中的意思是“排序”
答案 0 :(得分:2)
在以下参考文献上添加侦听器:
val airports = db.collection("airport")
这意味着要获取AirportDAO
集合中存在的所有airport
对象。如果您的myColl
列表的大小为7698
,则意味着您访问该集合时需要承担 7698 读取操作,在我看来,这非常
我的收藏夹中总共有14110个文档。
不,你不!您恰好有7698,这就是您的代码所说的。
如果要过滤结果,则应使用Query
。如果始终需要所有这些功能,那么您将使用Firestore创建大量流量。