因此,自2019年5月8日起,Firebase Firestore现在支持通过collectionGroup('collectionName')
查询相同名称的子集合。
是否可以通过这些子集合来检索同一docId
的多个文档?
这是我要完成的目标的一个直观示例。
collectionA
- documentA
: collectionB
- documentC
- documentB
: collectionB
- documentC
假设我要同时获得这两个documentC
文档。有办法吗?
我正在尝试使用的当前代码是这样:
const docIdFieldPath = FieldPath.documentId()
admin.firestore().collectionGroup('collectionB').where(docIdFieldPath, '==', 'documentC').get().then(...)
但是我抛出了一个错误:
INVALID_ARGUMENT: Resource name "projects/myProject/databases/(default)/documents/documentB" lacks "/" at index 86.
有关此文档的文档说,尝试通过collectionGroup
进行查询之前先创建索引,但是如果我尝试通过online-index-portal这样做,则会收到一条错误消息,提示__name__
字段保留。
我是不是很傻呢,还是尚不支持此功能?
答案 0 :(得分:1)
一些Firestore团队告诉我,不支持此功能。您无法根据文档ID的字符串进行过滤。移动SDK会给您带来更好的信息,但显然nodejs SDK不会。
您可以做的是将文档的ID作为字段存储在文档本身中,然后对该字段进行过滤。