当前位置: 首页 > 知识库问答 >
问题:

根据Firestore中的数据集进行查询

梁丘远航
2023-03-14

最近,我从firebase实时数据库迁移到firebase firestore,因为它说查询的速度取决于从集合中检索的数据集的大小(文档数),而不是集合中的文档数。我检查了100、5000和10000个集合中不同数量的文档,在一次查询中检索了20个文档。我看到的是,当我从一个集合中的100个、5000个和10000个文档移动时,查询的结果时间增加了。为什么会这样?是因为firestore处于测试阶段吗?

在android上查询(包含21000个文档的集合)

   collectionReference= FirebaseFirestore.getInstance().collection("_countries").document("+91").collection("_classes-exams").document(String.valueOf(mItem)).collection("_profiles").document(mOtherUserUid==null?uid:mOtherUserUid).collection("user_data");


collectionReference.document("_content").collection(articlesOrQuestions)

                    .orderBy("mTimeStampAsDate", Query.Direction.DESCENDING).limit(20).get().addOnCompleteListener(mCompleteListener)

                    .addOnFailureListener(new OnFailureListener() {

                        @Override

                        public void onFailure(@NonNull Exception e) {

                            Toast.makeText(getContext(), e.getMessage(), Toast.LENGTH_LONG).show();

                        }

                    });

查询上述集合参考时的android monitor图像:https://i.stack.imgur.com/QZaVX.jpg

通过查看堆,您可以看到查询花费了将近一分钟的时间(一分钟后内存没有太大变化,保持不变,一分钟后网络部分突然出现峰值,您可以推断调用onComplete)。调用“get()”函数和“onComplete”回调之间发生了什么。查询小集合时不会发生这种情况。为什么android上的网络查询速度快而慢?链接到jsbin:http://jsbin.com/fusoxoviwa/1/edit?html、css、js、控制台、输出

共有1个答案

张逸清
2023-03-14

您是否从现在正在从它们加载文档子集的同一Android客户端编写了这些集合?如果是这样,那就可以解释了。

在这种情况下,客户端缓存将包含有关所有文档的信息,并且您的应用程序正在花费时间浏览这些信息。

如果您尝试使用“干净的客户端”,它将不会缓存任何信息,它应该只在客户端正在请求(或之前已经请求)的文档上花费时间。

您当前看到的行为应该会在FiRecovery退出beta之前得到改善,因为索引会变得更高效,但也因为它会获得某种形式的GC。

 类似资料:
  • 问题内容: 有没有一种方法可以对 field1 = x* 和 field2 = y的文档执行删除操作 ? *** 我看到了删除功能,但没有附带。如果使用事务,则存在get和delete,但get似乎不接受“ where”子句。 我希望我在文档中缺少一些内容。 谢谢 问题答案: 为此,您需要先创建所需的查询,然后才使用如下方法:

  • 我想在firestore数据库中查询文档id。目前我有以下代码: 我没有结果。但当我查询其他字段时,它会起作用: 文档id的名称是如何调用的?

  • 问题内容: 我有一张像这样的表: SQL或蜂巢中是否有一种方法可以将其转换为类似表的形式: 我不确定有没有一个词来描述这种操作…任何帮助将不胜感激! 问题答案: 这基本上是一个。您没有指定要使用的RDBMS,但是可以使用聚合函数和语句在任何数据库中获取结果: 参见带有演示的SQL Fiddle 结果:

  • 我一直在从firestore的子集合中获取数据。我在下面附上我的代码脚本以供参考。 现在我从特定的子集合中获取数据。使用此查询行 其工作正常,并返回数据。 但我想从组文档中获取所有数据。 下面的链接附上了我的数据库图片。 Firestore数据库映像

  • 我有一个关于FireBase的firestore db的问题。 我有一个文档X,它包含一个名为users的字段,它是一个对象,引用了users集合中的用户。 它看起来与此类似: 我如何查询firestore db以获得所有的文档(来自家庭集合),这些文档的用户名为'john'? 我没有运气地尝试了以下几点: 但它只返回一个空数组。 如果我将用户的条目从key:reference切换到key:str

  • 我正在制作一个关于提问和阅读书籍时获得答案的应用程序,使用fiRecovery集合:书籍和用户。对于每个书籍文档,都有一个问题子集合:books/isbn/问题/{问题id}。对于每个自动生成的问题id,有属性包括asker_uid这是提出问题的用户的用户id。 现在,对于一个特定的用户,如果我想列出他问的所有问题。我可以进行组集合查询: 然后,如果我想在问题列表中显示问题所针对的书籍的详细信息,