【问题标题】:Is there a way of setting a range when querying data of firestore?查询firestore数据时有没有办法设置范围?
【发布时间】:2019-01-07 10:25:15
【问题描述】:

我有一个文档集合,所有文档都有随机 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 获取项目时,我将如何继续下一个查询?

【问题讨论】:

    标签: python google-cloud-firestore firebase-admin


    【解决方案1】:

    您可以使用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
                                });
    

    【讨论】:

      猜你喜欢
      • 2017-12-11
      • 1970-01-01
      • 1970-01-01
      • 2011-02-28
      • 1970-01-01
      • 1970-01-01
      • 2012-02-16
      • 1970-01-01
      相关资源
      最近更新 更多