如何使用FaunaDB索引按整数字段对文档进行排序?
FaunaDB按整数字段排序实现方案
可以实现,你可以通过配置FaunaDB索引的values参数完成按data.likes整数字段从高到低的排序需求,具体操作如下:
1. 创建专用排序索引
执行以下FQL创建支持按点赞数降序排序的索引:
CreateIndex({ name: "posts_sort_by_likes_desc", source: Collection("替换为你的实际集合名"), values: [ // reverse设为true代表按点赞数从高到低降序排序 { field: ["data", "likes"], reverse: true }, // 加入文档ref方便后续直接获取完整文档内容 { field: ["ref"] } ] })
2. 查询排序后的文档
基础查询(返回点赞数+文档ref数组)
Paginate(Match(Index("posts_sort_by_likes_desc")))
直接返回完整文档内容
Map( Paginate(Match(Index("posts_sort_by_likes_desc"))), Lambda(["likes", "docRef"], Get(Var("docRef"))) )
注意事项
- 如果集合内存在部分文档没有
data.likes字段,可在创建索引时添加terms参数过滤有效文档,避免排序结果不符合预期 - 如果需要附加过滤条件(如仅查询特定分类的内容),可将过滤字段添加到索引的
terms数组中,查询时传入对应过滤值即可 - 索引创建后需要一定时间同步存量数据,刚创建完成时查询可能返回不全,等待几秒后即可正常使用
内容的提问来源于stack exchange,提问作者AaronKanaron
相关产品推荐
相关产品推荐

