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

云FireStore:failed_precondition:查询需要索引

长孙雅志
2023-03-14

我在云Firestore里查询了一下,

CollectionReference questionRef = db.collection("collectionName");
        Query query = questionRef.whereEqualTo("field1", "content1")
                .whereEqualTo("field2",content2)
                .orderBy("field3")
                .limit(LIMIT);
        query.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>()
        {
            @Override
            public void onComplete(@NonNull Task<QuerySnapshot> task)
            {
                if (task.isSuccessful())
                {
                    for (DocumentSnapshot document : task.getResult())
                    {
                        Log.d(TAG, document.getId() + " => " + document.getData());
                    }
                }
                else
                {
                    Log.w(TAG, "Error getting documents.", task.getException());
                }
            }
        });

我收到了错误,但我有一个索引。

共有1个答案

公西天逸
2023-03-14

我得到了这个问题,我开始知道我们必须为数据库创建索引。

您可以通过简单的解决方案来解决这个问题。

首先在日志类中显示错误消息。

看起来您已经为“field3”添加了索引,但是在控制台中,请确保索引是正确的并已启用。

 类似资料:
  • 我正在建设聊天应用程序与后端firestore数据库与下面的结构。 我正在获取下面提到的数据。它返回我的用户id在字段“UserArray”中涉及的通道列表,并根据给定的日期/时间获取“LASTUPDATEDON”数据。 在上面的例子中,它显示了我在android logcat中创建复合索引的错误。复合索引创建完成,但仍得到相同的错误消息。

  • 我正在尝试搜索Spotify中的曲目元数据。我想看看Spotify是否有一首来自YouTube视频的歌曲。这是我用于进行搜索的URL模板: 由于很难确定搜索查询的哪一部分是艺术家还是曲目,因此我将这两种类型添加为搜索查询的类型。 然而,当我得到一个YouTube的视频,标题是这样的:“凯蒂·佩里——我们是这样做的(官方视频)[·莱特拉·西班牙语——歌词英语”,并将其用作我的搜索词时,我得到了0个结

  • 我明白分区键对于可伸缩性和数据存储方式很重要。但是如果我们考虑搜索,分区键是不是有点像额外的filter/where子句?所有文档都被索引,所以我可以执行查询,如下所示: 在使用此SQL查询语法时,我是否还应该指定分区键,或者指出如何允许跨分区查询?

  • 我收集了大约75000份文件。 数据库的总大小约为45GB 在75k个文档中,约45k个文档的大小分别为900 KB(约42 GB),其余文档的大小分别约为120 KB。 每个文档都映射到其他集合中的ObjectId,并具有一个,两者都已索引。 现在,我需要获取上个月特定客户ID的文档。数量约为5500份文件。这个custId包含大小约为120 KB的小文档。 以下是我的查询: 不过,查询需要2分

  • 我这里有3个实体A、B和C。 实体A和实体B都与实体C有关系。在我的例子中,我有一个来自实体A的当前id,并且我想使用来自实体C的查询到达实体B。 多谢了。

  • 几个月前,我在使用java.sql时了解到了这一点。连接我需要关闭PreparedStatements和ResultSet,以防止内存泄漏,如下所述 然而,我最近开始与一个使用org.sql2o的新团队合作。连接,这是一个很好且有用的jdbc包装器,但我注意到它们通常不会关闭其org.sql2o。查询对象。 如您所见,查询对象从未显式关闭。我认为最好同时关闭查询: 但我不确定这是否真的有必要。如果