我已经阅读了有关类似问题的所有答案,但是这些问题和解决方案与我遇到的问题不同,例如,尝试查询已删除的文档,或者拥有一个属性而不是子集合。
我正在尝试计算所有DrilledDepthTolerance.toleranceState等于“ notMeasured”的计数。
我已经通过查询错误消息中的链接来运行查询并在FireStore中设置索引。它在“豁免”下的“单个字段”索引中设置了以下内容:
我认为这可能是问题所在-文档似乎总是描述要在复合索引下添加的索引,而该索引是在单个字段下创建的?
这是我的代码(对不起,它在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”的子集合相同:
https://firebase.google.com/docs/firestore/manage-data/structure-data
我真的很感谢一些关于我要去哪里的提示。
答案 0 :(得分:2)
您的代码正在查询名为“ DrilledDepthTolerance”的集合:
var collectionRGroupRef = db.CollectionGroup("DrilledDepthTolerance");
据我所知,您没有该名称的任何收藏。您正在显示一个具有字段的文档,称为“ DrilledDepthTolerance”,该文档是其中包含其他字段的地图。
您的收藏实际上被命名为“孔”:
var collectionRGroupRef = db.CollectionGroup("holes");
您可以像这样查询嵌入式的errorState字段的值:
Query query = collectionRGroupRef
.WhereEqualTo("DrilledDepthTolerance.toleranceState", "notMeasured");