1

标题说的差不多。

最好使用内置ts时间戳,而不是data.

4

1 回答 1

1

对于分页/计数,您可以创建如下索引:

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 ,则必须使用afterbefore迭代光标(您可以在此处找到教程)。

于 2020-08-11T08:58:44.003 回答