python - 查询firestore数据时有没有办法设置范围?
问题描述
我有一个文档集合,所有文档都带有随机 id 和一个名为date
.
docs = collection_ref.order_by(u'date', direction=firestore.Query.ASCENDING).get()
想象一下,我将搜索限制在前十个
docs = collection_ref.order_by(date', direction=firestore.Query.ASCENDING).limit(10).get()
当我想从 11 到 20 获取项目时,我将如何继续我的下一个查询?
解决方案
您可以使用offset()
, 但跳过的每个文档都算作阅读。例如,如果您这样做了query.offset(10).limit(5)
,您将被收取 15 次读取的费用:10 次偏移 + 您实际获得的 5 次。
如果您想避免不必要的读取,请使用startAt()
或startAfter()
示例(Java,抱歉,不会说 python。这里是文档的链接):
QuerySnapshot querySnapshot = // your query snapshot
List<DocumentSnapshot> docs = querySnapshot.getDocuments();
//reference doc, query starts at or after this one
DocumentSnapshot indexDocSnapshot = docs.get(docs.size());
//to 'start after', or paginate, you can do below:
query.startAfter(indexDocSnapshot).limit(10).get()
.addOnSuccessListener(queryDocumentSnapshots -> {
// next 10 docs here, no extra reads necessary
});
推荐阅读
- php - 无法访问对象中的日期值
- python - Keras iterator with augmented images and other features
- excel - Excel VBA 中的 TAB 事件问题
- python - AttributeError:“input_4”层有多个入站节点,输出形状不同
- java - 构造函数参数中 List 的空指针异常
- python - 为什么 django 在制作我的第一个投票应用程序时给我这个错误
- c# - 如何从另一个类 C#/MVC 访问属性
- ssl - mitmproxy:禁用 SSL-ed 内容检查,但处理其余内容
- python - 在 GitHub Pages 上显示交互式绘图图表(.html 文件)
- javascript - 数组中的对象未在 JavaScript 中更新