Go 使用文档ID(_名称__)查询Where<&燃气轮机;操作员

Go 使用文档ID(_名称__)查询Where<&燃气轮机;操作员,go,google-cloud-firestore,Go,Google Cloud Firestore,我使用按字母顺序单调递增的可排序ID(即RFC3339格式的日期)将文档插入Firebase的集合中。这有助于我查询最旧的文档,并在达到一定数量时将其删除 因此,我的文档ID看起来像以下字符串: “2021-05-21T18:00:00Z” “2021-05-21T21:00:00Z” “2021-05-21T22:00:00Z” 我正在使用Go library检索ID小于(其他因素:\uuuu name\uuuuuuu)的文档,它的作用与您认为的不同。请参阅。它实际上是包含文档ID的完整路

我使用按字母顺序单调递增的可排序ID(即RFC3339格式的日期)将文档插入Firebase的集合中。这有助于我查询最旧的文档,并在达到一定数量时将其删除

因此,我的文档ID看起来像以下字符串:

  • “2021-05-21T18:00:00Z”
  • “2021-05-21T21:00:00Z”
  • “2021-05-21T22:00:00Z”

我正在使用Go library检索ID小于(
其他因素:\uuuu name\uuuuuuu)的文档,它的作用与您认为的不同。请参阅。它实际上是包含文档ID的完整路径,必须进行匹配


顺便说一句,不鼓励使用这种有序的documentID,因为它会影响数据库性能。在读写操作中,您会遇到争用和冲突。请将这些值放入文档中的一个字段中,只需使用随机Id(例如由
.doc()
创建)作为文档Id。通过这种方式,您可以搜索、排序、限制数据,以及对数据进行任何其他操作。实际上,没有任何理由对文档使用有序的常规Id。

要以可扩展的格式实现这一点,您应该在每个文档中维护一个索引字段,该字段是其文档Id,看起来是时间戳。fr在那里,您可以根据需要轻松地查询和排序

这是因为抓取firestore集合以按ID查找会影响firestore上的读取性能,导致等待时间过长,并且随着每个文档的添加而增加,因此使用索引更为理想和可扩展


关于集合组查询的评论:如果您将查询限制为仅1个特定用户的“订单”集合,则不需要集合组查询,因为这将在所有称为“订单”的集合中进行搜索。

您是否考虑过使用
orderBy
StartAt
查询:=u.DB..Collection(“用户”)).Doc(uid).Collection(“orders”).OrderBy(firestore.DocumentID,firestore.Asc).StartAt(“2020-04-23T02:00:00Z”)
不确定代码是否正确。从未使用过Go-。-您可以在此处找到更多关于它的信息:其他因素:\uuu name\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu我的问题更像是:为什么这个查询操作符不起作用(不返回任何结果)。我假设名称已经在Firestore中使用升序索引进行排序(因为查询返回默认按ID排序的文档)。由于文档的名称不可查询,因此在列出和分页时会返回这些名称。但出于所有目的-不受搜索索引的监视。我认为可以使用诸如=、In、NotIn之类的运算符查询文档ID。您可能希望改为对文档快照指定的结果进行分页,并设置一个限制,以便每个文档都有元数据,但到目前为止,社区中还没有记录或实践这种做法。常见的假设是,只有在解决请求后,快照上才有元数据。