当前位置: 首页 > 知识库问答 >
问题:

CollectionGroupQuery但将搜索限制在特定文档下的子集合

卫焕
2023-03-14

这是我的数据库结构。
城市->地标->景点(每一个都是一个集合)

查询
列出特定城市下的所有景点。

共有1个答案

楚皓君
2023-03-14

这应该使用fieldpath.documentId()来实现。

每个文档的数据中都有一个隐藏的__name__字段,这是fieldpath.documentID()的目标。

对于普通的集合查询,fieldpath.documentID()将只是文档的ID。但是,对于集合组查询,此值是文档的路径。

const cityRef = firebase.firestore().doc('cities/cityId');

firebase.firestore().collectionGroup('attractions')
  .orderBy(firebase.firestore.FieldPath.documentId())
  .startAt(cityRef.path + "/"),
  .endAt(cityRef.path + "/\uf8ff")
  .get()
  .then((querySnapshot) => {
    console.log("Found " + querySnapshot.size + " docs");
    querySnapshot.forEach((doc) => console.log("> " + doc.ref.path))
  })
  .catch((err) => {
    console.error("Failed to execute query", err);
  })
const cityRef = firebase.firestore().doc('cities/cityId');

firebase.firestore().collectionGroup('attractions')
  .orderBy(firebase.firestore.FieldPath.documentId())
  .startAt(cityRef.path),
  .endAt(cityRef.path + "\uf8ff")
  .get()
  .then((querySnapshot) => {
    console.log("Found " + querySnapshot.size + " docs");
    querySnapshot.forEach((doc) => console.log("> " + doc.ref.path))
  })
  .catch((err) => {
    console.error("Failed to execute query", err);
  })

如果文档ID的长度不同,则上述块将失败。假设您只想要“/cities/new York”下的文档,如果另一个名为“new Yorkshire”的城市也在cities集合中,那么它也会包含它的结果。

 类似资料:
  • 继我上一篇文章之后,我了解了个人收藏的写作限制 每秒500次写入一个收藏 这个500ps的限制如何适用于最近引入的集合组?(btw...托德在这里没有得到足够大的欢呼!: P) https://firebase.google.com/docs/firestore/query-data/queries#collection-组查询 Firestore限制仍然仅引用单个集合: https://fire

  • 我有一个包含一些整数值的数组,我需要得到其中的一个子集,它给我的最大和小于给定值 假设我有一个数组: 我想得到这个数组的一个子集,最大化总和,但低于用户给定的限制,比如250。在这种情况下,它应该返回[139,40,29]<我看了一下这个问题和相关的答案,并尝试使用给出的代码,但我不太理解。无论如何,我已经尝试过了,将最小值设置为0,将最大值设置为给定的限制,但它总是返回“5”,这是不正确的,因为

  • 假设我有一些用户使用以下文档编制索引: ElasticSearch DSL是否允许我构造一个查询,在该查询中,我可以根据人们的电子邮件地址进行搜索,但前提是该地址处于活动状态?更抽象地说,根据嵌套对象的其他属性搜索文档。 满足此条件的搜索将返回此文档以搜索或,但在搜索时不会返回此文档。

  • 编辑1:我也试过这个,但同样的问题。

  • 我需要你帮助我设计一个真实场景的索引。这可能是一个很长的问题,让我尽量简明扼要地解释一下。 我们正在构建一个基于Elasticsearch的搜索平台,为客户提供站点搜索体验,索引中的文档可以是这样的: 对于每个查询,返回的命中文档默认按相关性排序,但我们的客户还希望为一些关键字提升一些特定文档, 它们为我们提供了以下内容,如增强配置XML: 也就是说,如果用户搜索“keyword1”,前1名命中的

  • 问题内容: 假设我要搜索一系列嵌入式文档或子文档,但将它们的父母作为我的结果返回,例如“建筑物和单元”: 现在假设我要退回所有单位> = 1000平方英尺的建筑物。我该怎么做? 问题答案: 将单位大小存储为数组: 并搜索: