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

documentId上的Firestore集合组查询

卜季萌
2023-03-14
db.collectionGroup('likedBy').where(firebase.firestore.FieldPath.documentId(), '==', "User A").get();

共有1个答案

邓禄
2023-03-14
db.doc('collection/docId/collection/docId/collection/docId")
db.collection('collection").doc("docId/collection/docId/collection/docId")
db.collection('collection").doc("docId").collection("collection").doc("docId/collection/docId")
db.collection('collection").doc("docId").collection("collection").doc("docId").collection("collection").doc("docId")
db.doc("collection/docId").collection("collection").doc("docId").collection("collection").doc("docId")
db.collection("collection/docId/collection").doc("docId").collection("collection").doc("docId")
db.doc("collection/docId/collection/docId").collection("collection").doc("docId")
db.collection("collection/docId/collection/docId/collection").doc("docId")

相关的工作是要求编码器将docId作为每个文档中的一个字段复制,并在此基础上编写查询。 我已经在FireStore.js和我的应用程序之间编写了自己的层来抽象行为,并且可能只是将其作为库的基本特性来实现。

但这显然是一个错误,到目前为止,每个人都试图告诉我这是有意义的,他们将更改文档以匹配现有的行为(但不是方法名)。

正如我之前所写的,我不断地得到一束雏菊,并被告知“看到了吗?这些是玫瑰!!文档称它们为玫瑰!!玫瑰不管叫什么名字都一样香,等等!!”

它以3种方式进行查询:

1)只使用showid--这会以常见的“无效查询”而失败。当通过fieldpath.documentId()查询集合组时,提供的值必须导致有效的文档路径,但'pqipv5i7uwne9qjqmm72'(实际的showID)不是,因为它有奇数个段(1)。“

2)一次使用“相对路径”(/shows/showid),它没有错误,但不返回任何文档。

documentID可以用作查询的一部分,但是正如@greg-ennis上面指出的,它需要偶数个段。事实证明,如果您确实需要一个collectionGroup(I do),那么要比较的“ID”需要冗余地添加collectionGroup ID/Name作为一个段:

db.collectionGroup('likedBy')
.where(firebase.firestore.FieldPath.documentId(), '==', "likedBy" + "/" + "User A")
.get();

我用过它,它(*有点)有效。(诚然,我花了2个小时才弄清楚,上面的问题有助于集中搜索)

另一方面,这种特定情况不是您希望使用CollectionGroup的地方。记住什么是collection group--一种引用一组单独的集合的方法,就好像它们是一个集合一样。在这种情况下,保存“用户a”的“喜欢”的“集合”作为集合存在于“用户a”的文档下。只需在删除“用户A”的文档之前删除该单个集合即可。没必要把别人的喜欢都扯进来。

使用collectionGroup“嘲弄”

db.collectionGroup("Travesty")
.where(firebase.firestore.FieldPath.documentId(), '==', "document_id_I_want")

...会失败,但是...

db.collectionGroup("Travesty")
.where(firebase.firestore.FieldPath.documentId(), '==', "TopCollection/document_this/NextCollection/document_that/Travesty/document_Id_I_want")
.get()

...会成功的。这使得这一点毫无用处,因为如果我们有所有这些信息,我们只会使用:

db.doc("TopCollection/document_this/NextCollection/document_that/Travesty/document_Id_I_want")
.get()
 类似资料:
  • 我想我读到您可以使用新的Firebase Firestore查询子集合,但我没有看到任何示例。例如,我以以下方式设置了Firestore: 舞蹈[收藏] DanceName 歌曲[收藏] 松南 我如何才能查询“查找所有的舞蹈在songName=='x'”

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

  • 问题内容: 我是Firestore的新手。我想通过使用ID按联接查询从其他集合中获取名称。我该怎么办? 这是一些样本集合。 我有两个集合。员工和部门。 我想查询员工集合,并想添加部门文档作为响应的一部分。这是我尝试获取的示例响应。 这是我获取员工数据的示例代码。 如何为该员工添加部门对象? 问题答案: Firestore没有联接查询。如果要合并两个文档中的数据,则必须分别查询它们,然后根据两个文档

  • 为了查询子集合和父文档,我对firest的文档及其最佳实践有一些问题。我试图使用Typecript在我的Firebase函数中进行查询。 DB: ├── 用户(集合) │ └── 用户(ID为的文档) │ │ └── 计划(子集合) 我有一个数组中的用户ID列表,我需要从用户文档和当前文档的子集合计划中收集信息。 但是如何从用户文档和子集合(计划)文档(当前)中获取数据,我不知道在场景中最有效的查

  • 我有文档,其中包含子集合。现在,我想获取子集合中至少有一项的所有项目。这可能吗? 类似于: < code>getDocs(collection(getDB()," Projects)),其中(" Items.size ","