FaunaDB:如何 paginate/count 最近 n 天内的所有文档
FaunaDB: How to paginate/count all documents within the last n days
标题说的差不多。
最好使用 built-in ts
时间戳,而不是 data
中的附加字段。
对于 paginating/counting 你可以这样创建一个索引:
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'))]))
如果您想获取 returned 文档的 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() return 64 个文档。您最多可以将批次增加到 100000 个文档:
Paginate(........., {size:100000})
如果结果集大于 size,您必须使用 after 和 before[= 迭代游标51=](可以找教程here)。
标题说的差不多。
最好使用 built-in ts
时间戳,而不是 data
中的附加字段。
对于 paginating/counting 你可以这样创建一个索引:
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'))]))
如果您想获取 returned 文档的 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() return 64 个文档。您最多可以将批次增加到 100000 个文档:
Paginate(........., {size:100000})
如果结果集大于 size,您必须使用 after 和 before[= 迭代游标51=](可以找教程here)。