微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

FaunaDB:如何在最近n天内对所有文档进行分页/计数

如何解决FaunaDB:如何在最近n天内对所有文档进行分页/计数

标题说的差不多。

最好使用内置的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-14T18:59:59Z'))])),Lambda(['ts','ref'],Var('ref')))

或获取完整文档:

Map(Paginate(Range(Match('all_docs_ts'),Get(Var('ref'))))

要进行计数,只需使用 Count()函数:

Count(Paginate(Range(Match('all_docs_ts'),[ToMicros(ToTime('2020-07-14T18:59:59Z'))])))

请记住,默认情况下,分页()每页返回 64 个文档。您最多可以将批次增加到 100000 个文档:

Paginate(.........,{size:100000})

如果结果集大于然后是 size ,则必须使用之后之前来遍历光标(您可以找到教程{{ 3}})。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。