【发布时间】:2020-11-30 20:24:25
【问题描述】:
正如标题所说的那样。
最好使用内置的ts 时间戳,而不是data 中的附加字段。
【问题讨论】:
标签: faunadb
正如标题所说的那样。
最好使用内置的ts 时间戳,而不是data 中的附加字段。
【问题讨论】:
标签: faunadb
对于分页/计数,您可以创建如下索引:
CreateIndex({name:"all_docs_ts",source:collection:Collection('test'),values:[{field:['ts']},{field:['ref']}]})
然后您可以使用如下查询对文档进行分页:
Paginate(Range(Match('all_docs_ts'),[ToMicros(ToTime('2020-07-14T06:30:00Z'))],[ToMicros(ToTime('2020-07-14T18:59:59Z'))]))
如果要获取返回文档的 ref,可以使用如下查询:
Map(Paginate(Range(Match('all_docs_ts'),[ToMicros(ToTime('2020-07-14T06:30:00Z'))],[ToMicros(ToTime('2020-07-14T18:59:59Z'))])),Lambda(['ts','ref'],Var('ref')))
或获取完整文档:
Map(Paginate(Range(Match('all_docs_ts'),[ToMicros(ToTime('2020-07-14T06:30:00Z'))],[ToMicros(ToTime('2020-07-14T18:59:59Z'))])),Lambda(['ts','ref'],Get(Var('ref'))))
只需使用 Count() 函数进行计数:
Count(Paginate(Range(Match('all_docs_ts'),[ToMicros(ToTime('2020-07-14T06:30:00Z'))],[ToMicros(ToTime('2020-07-14T18:59:59Z'))])))
请记住,默认情况下 Paginate() 每页返回 64 个文档。您可以将批次增加到最多 100000 个文档:
Paginate(........., {size:100000})
如果结果集大于 size,您必须使用 after 和 before 遍历光标(您可以找到教程 @987654321 @)。
【讨论】:
TimeSubtract,但基本结构是一样的。我必须使用 ToMicros 的事实让我想知道在数据中存储正确的 Date 类型是否会是更好的解决方案。