firebase - 文档 ID 上的 Firestore 集合组查询

标签 firebase google-cloud-firestore angularfire

<分区>

我正在尝试运行以下查询:

this.db.firestore
        .collectionGroup('members')
        .orderBy('dateModified', 'desc')
        .where(firebase.firestore.FieldPath.documentId(), '==', uid)

但是我得到了错误:

Invalid query. When querying a collection group by FieldPath.documentId(), the value provided must result in a valid document path, but 'X6yL5Ko55jSMWhhoQUO91xVYdEH3' is not because it has an odd number of segments (1).

将文档 ID 添加到文档中是解决此问题的唯一方法吗? 这并不理想,因为我有很多现有数据...... 文档 id 是 firebase 用户的 uid。

最佳答案

如错误消息所述,对于集合组上的索引,documentId() 字段值实际上存储为文档路径,以确保在索引中唯一查找这些值。

如果您还想通过集合组查询文档 ID,您确实必须将 ID 作为字段值存储在每个文档中。

另外请记住,如果您使用内置的 add() 操作,那么可能会为查询获取多个文档,即使这在天文数字上是不可能的。

关于firebase - 文档 ID 上的 Firestore 集合组查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68433976/

相关文章:

javascript - Firebase:如何从存在特定键的数据中检索记录?

android - 监控用户在应用程序不同部分花费的时间

android - 如何将 GeoPoint 从 Firebase - Firestore 映射到 Android 中的 Kotlin DTO 对象

javascript - React 状态存储和输出重复值

android - firebase_messaging : ^4. 0.0+4 不工作

swift - 使用 Swift (Firestore) 访问特定文档字段

javascript - Firebase "once"事件不返回 promise

javascript - Firebase child() 与 Angularfire $firebaseObject

java - 如何在Java Map中存储多个键值对,因为 "put()"会覆盖以前的数据

reactjs - 在渲染前设置状态并引用 firestore