firebase
查询是如何工作的?
例如,如果我写这个查询,
var collectionReference = FirebaseFirestore.instance
.collection('collection')
.where(cond)
.where(cond2)
.where(cond3);
那么,这会只返回符合条件的文件吗?而我只会因为那些文件的阅读而被收取费用?
来自文档TL:DR
阅读费用有一些细微差别,你应该记住。以下各节将详细解释这些细微差别。收听查询结果
Cloud Firestore允许您侦听查询结果,并在查询结果更改时获得实时更新。
当您收听查询结果时,每次添加或更新结果集中的文档时,都会收取读取费用。当文档由于更改而从结果集中删除时,您还将收取读取费用。(相比之下,当文件被删除时,您不收取读取费用。(
此外,如果侦听器断开连接的时间超过30分钟(例如,如果用户离线(,您将被收取读取费用,就像您发出了一个全新的查询一样。管理大型结果集
Cloud Firestore有几个功能可以帮助您管理返回大量结果的查询:
游标,允许您恢复长时间运行的查询。
页面标记,可帮助您对查询结果进行分页。
限制,指定检索的结果数量
偏移,允许您跳过固定数量的文档。
使用游标、页面标记和限制没有额外成本。事实上,这些功能可以通过只阅读您实际需要的文档来帮助您省钱。
但是,当您发送包含偏移量的查询时,您将为每个跳过的文档收取读取费用。例如,如果您的查询使用10的偏移量,并且查询返回1个文档,则将收取11次读取的费用。由于这种额外的成本,您应该尽可能使用游标而不是偏移。文档读取以外的查询
对于文档读取以外的查询,例如请求集合ID列表,您将为一个文档读取付费。如果获取完整的结果集需要多个请求(例如,如果您正在使用分页(,则每个请求会向您计费一次。查询的最低费用
即使查询没有返回结果,您执行的每个查询也要至少读取一个文档。