如何在firebase firestore中查询多个嵌套子集合中的多个文档?



我有三个子集合嵌套在一个主集合下。

我想让' collection3 '下的所有文档对应'collection2'中的每个文档对应'collection1'中的每个文档

我想查询-

admin.firestore().collection('collection1').doc('FOR ALL DOCS IN COLLECTION 1').collection('collection2').doc('FOR ALL DOCS IN COLLECTION 2').collection('collection3').get()

我的问题是,我可以这样查询吗?以下查询是否有效?

collection('collection1/*/collection2/*/collection3')

这是一个有效的路径吗?什么是"*"?表明?

我试过这样做,

const baseRef = admin.firestore().collection(`collection1/*/collection2/*/collection3`);
const querySnap = baseRef.get()

它返回给我一个querySnapshot但是当我试图循环这个querySnapshot时,它没有打印任何东西

querySnap.forEach(doc => console.log(doc.id))

输出无。

我期望在控制台中打印doc id。

这可以通过集合组级查询实现。

collectionGroup选项返回您创建的集合组中的所有文档。

const allDocsQuery = admin.firestore()
.collectionGroup('collection1');
await allDocsQuery.get().then((snap) => {
// do operations with your data
});

注意,你需要创建一个集合组来使用它——它会抛出一个指向创建页面的链接的错误,但是你也可以按照上面链接中的文档来做。

最新更新