标题说的差不多。
最好使用内置ts
时间戳,而不是data
.
对于分页/计数,您可以创建如下索引:
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迭代光标(您可以在此处找到教程)。