我在 firestore 中有以下结构的数据:
directory---
|---randomDoc1---
| |---contacts--
| |---9212345677--
| | |---name: abc
| |
| |---8564224455
|---randomDoc2---
|---contacts--
|---9212456677--
我想查询嵌套的directory->randomDoc->contacts->923436475
如果我有 9212345677
联系电话号码(在联系人集合 doc1 中),并且我想在目录集合
中查询此 9212345677
号码,并获取包含该数字的所有 randomDocs。
例如 randomDoc1 & randomDoc3
的联系人集合包含此号码,它应该返回 randomDoc1 & randomDoc3
。
以下是我正在尝试的:
admin.firestore().collection("directory4").where('id', '==', mobileNo).limit(20).get().then(function(docsSnapShot){
if (docsSnapShot.size > 0) {
//print all docsSnapShot
}else{
//contact number do not exist in any of collections
}
});
最佳答案
目前无法跨多个子集合运行查询。
去规范化
对此的一个解决方案是使用整个联系人文档或使用指向原始文档的引用来对这些数据进行非规范化。
添加对用户集合的目录引用
创建一个users
集合,并在每个用户文档中创建一个directoryDocs
集合。每次将新联系人添加到目录文档时,都会触发 Cloud Function 将文档引用复制到 users/{userId}/directoryDocs 集合。
关于javascript - 如何对嵌套文档进行火存储查询。 Firebase Nodejs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49361746/