查询firestore数据时有没有设置范围的方法?
Is there a way of setting a range when querying data of 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.here's link to docs though):
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
});
我有一组文档,所有文档都有随机 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.here's link to docs though):
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
});