对Firestore子集合中的文档进行通配符查询

时间:2020-02-08 19:57:13

标签: javascript google-cloud-firestore

我的Firestore数据库的组织如下: (col =收藏,doc =文档)

-data (col)
  -userid -> random number (doc)
    -clients (col)
      -clientid -> random number (doc)
      -clientid -> random number (doc)
  -userid(doc)
    -clients (col)
      -clientid -> random number (doc) 
      ...

我需要读取特定“ clientid”文档中的所有数据,只是要求用户插入其clientid随机数。

我想知道是否可以像数据库规则那样使用通配符语法读取此数据:

var clientid = "65486649466"
var clientdata = db.collection("data").doc({userid}).collection("clients").doc(clientid);

还是有另一种方法? 谢谢

1 个答案:

答案 0 :(得分:0)

Firestore客户端查询中没有通配符。您需要为查询所需的所有集合ID和文档ID提供准确的值。

如果您需要查询整个数据库中所有称为“客户”的子集合(包括嵌套在“数据”下的子集合,以及其他地方),则可以改用collection group query查找这些文档:

const query = db.collectionGroup("clients")
query.get()...

此查询将返回所有名为“ clients”的子集合中的所有文档。不幸的是,您不能基于每个客户文档的文档ID来过滤此查询。为此,您还需要将客户文档ID写入每个文档中的字段。假设您已完成操作,并且字段名称称为“ id”:

const query = db.collectionGroup("clients").where("id", "==", clientid)
query.get()...

这将为您提供“ id”字段为clientid的所有“客户”子集合文档。