对collectionGroup的Firestore查询未返回任何文档

时间:2020-05-04 10:20:17

标签: c# google-cloud-firestore

我已经阅读了有关类似问题的所有答案,但是这些问题和解决方案与我遇到的问题不同,例如,尝试查询已删除的文档,或者拥有一个属性而不是子集合。

这是我的数据库的图像: database image

我正在尝试计算所有DrilledDepthTolerance.toleranceState等于“ notMeasured”的计数。

我已经通过查询错误消息中的链接来运行查询并在FireStore中设置索引。它在“豁免”下的“单个字段”索引中设置了以下内容: Index

我认为这可能是问题所在-文档似乎总是描述要在复合索引下添加的索引,而该索引是在单个字段下创建的?

这是我的代码(对不起,它在c#中):

 try
        {
            var collectionRGroupRef = db.CollectionGroup("DrilledDepthTolerance");
            Query query = collectionRGroupRef.WhereEqualTo("toleranceState", "notMeasured");
            QuerySnapshot querySnapshot = await query.GetSnapshotAsync();

            return querySnapshot;
        }

        catch (Exception e)
        {
            return null;
        }

它返回零的文档计数。

数据库具有与查询条件匹配的文档。

我已经查看了示例,并且数据库的设置似乎与示例中所需的设置匹配。从Firestore文档中,我将在数据库中查询的数据与在此示例中搜索名字为“ Ada”的子集合相同: Ada

https://firebase.google.com/docs/firestore/manage-data/structure-data

我真的很感谢一些关于我要去哪里的提示。

1 个答案:

答案 0 :(得分:2)

您的代码正在查询名为“ DrilledDepthTolerance”的集合:

var collectionRGroupRef = db.CollectionGroup("DrilledDepthTolerance");

据我所知,您没有该名称的任何收藏。您正在显示一个具有字段的文档,称为“ DrilledDepthTolerance”,该文档是其中包含其他字段的地图。

您的收藏实际上被命名为“孔”:

var collectionRGroupRef = db.CollectionGroup("holes");

您可以像这样查询嵌入式的errorState字段的值:

Query query = collectionRGroupRef
    .WhereEqualTo("DrilledDepthTolerance.toleranceState", "notMeasured");