首页 > 解决方案 > 是否可以通过 firestore collectionGroup 查询访问父文档字段

问题描述

我的问题不是关于在您拥有文档快照时访问父文档的字段。

我正在尝试执行一个必须访问父文档字段的查询,例如,使用以下 NoSQL 结构:

(C) users/
   (D) userId/
       -premium: false
       -random: uuid.v4 string
       (C) privateData/
           (D) userPrivateData/
           -notificationsToken: "9329e48329"
    ...

如果我想运行从非高级用户那里获取 N 个随机通知令牌的计划任务,最简单的方法是执行“collectionGroup”查询,如下所示:

firestore
    .collectionGroup("privateData")
    .where("random", Math.random() < 0.5 ? "<=" : ">=", randomId)
    .where("premium", "==", false)
    .orderBy("random")
    .orderBy("notificationsToken");

但是,“随机”和“高级”字段对应于父文档......

是否可以访问 firestore collectionGroup 查询中的父文档字段?

标签: javascriptfirebasegoogle-cloud-firestore

解决方案


不,这是不可能的,这些where()条款只能适用于每个privateData子集合中的文档。

一种解决方案是复制子项中的字段。


推荐阅读