Cloud Firestore 如何查找包含特定文档 ID 的子集合的所有文档?
Posted
技术标签:
【中文标题】Cloud Firestore 如何查找包含特定文档 ID 的子集合的所有文档?【英文标题】:Cloud Firestore how to find all documents with subcollection containing specific document ID? 【发布时间】:2019-09-26 21:02:06 【问题描述】:我正在尝试实现一种方法来保持 Firestore 中的一致性,但我需要一种方法来找到存在重复数据的所有位置。 Firestore 中是否有办法查找其子集合包含具有特定文档 ID 的文档的所有文档?例如对于如下结构
Users(collections)
1234(document)
Name:
Friends(collection)
5678(document)
Name:
9012(document)
Name:
5678(document)
Name:
我将使用什么查询来查找其好友列表包含文档 ID 为 5678 的文档的所有用户 ID?例如,当用户 5678 决定更改他/她的姓名时?
【问题讨论】:
【参考方案1】:不完全是。早在 5 月就引入了集合组查询,它允许您搜索具有相同名称的所有集合,但该限制不适用于您的用例,因为您的用户存储在 Users
中,而他们的朋友存储在 Friends
中.
如果好友被重命名以匹配用户并且id
也存储在文档中,则可以使用这种类型的查询:
let friends = db.collectionGroup('users').where('id', '==', id);
friends.get().then(function(querySnapshot)
querySnapshot.forEach(function(doc)
console.log(doc.id, ' => ', doc.data());
);
);
https://firebase.google.com/docs/firestore/query-data/queries#collection-group-query
【讨论】:
以上是关于Cloud Firestore 如何查找包含特定文档 ID 的子集合的所有文档?的主要内容,如果未能解决你的问题,请参考以下文章
如何从Swift中的Cloud FireStore Firebase访问特定字段
如何使用颤振和飞镖从 Cloud Firestore 检索特定数据?
如何使用 SwiftUI 中的 documentID 删除特定的 Cloud Firestore 文档?