我一直在研究FQL和Fauna DB的docs索引。有没有办法颠倒查询返回的数据的顺序?以下是我拥有的代码:
q.Map( q.Paginate(q.Match(q.Index("all_pages")), { //! Find way to change order size: 3 }), ref => q.Get(ref) )
docs提到了reverse标志。有人知道怎么用吗?
reverse
ycl3bljg1#
假设您有一个集合,其中包含带有价格字段的文档,我们将其命名为...呃..。物美价廉!让我们向集合中添加两个单据,价格分别为1和2。
[{ "price": 1 }, { "price": 2 }]
Image in UI console of the documents
使用以下代码片段在该价格值上创建常规范围索引:
CreateIndex({ name: "regular-value-index", unique: false, serialized: true, source: Collection("priceables"), terms: [], values: [ { field: ["data", "price"] } ] })
可以有多个值(例如,综合指数),并且可以为每个值设置反转字段。要创建反向索引,请将该特定值的反向设置为TRUE。
CreateIndex({ name: "reverse-value-index", unique: false, serialized: true, source: Collection("priceables"), terms: [], values: [ { field: ["data", "price"], reverse: true } ] })
如果您转到UI控制台并打开索引,您会注意到这些值从高到低排序。UI console, reverse index我想让您困惑的是还不能在UI中设置反转布尔值。但是您只需转到Shell并粘贴FQL代码来创建索引:Image of the shell
v6ylcynt2#
我刚刚成功地翻转了一个Index。这些文档很有帮助,但它们没有给出实现Mapfunction的示例。秘诀是用q.Reverse Package Map和function:
Index
Map
function
q.Reverse
q.Reverse( q.Map( q.Paginate(q.Match(q.Index("all_pages")), { //! Find way to change order size: 3 }), ref => q.Get(ref) ) )
这对你应该很管用!
xmjla07d3#
根据布雷希特的回答,颠倒数据顺序的最佳方式是使用索引。Founa以排序的顺序存储索引项,因此当您的索引使用reverse: true时,索引中匹配的项已经以相反的顺序排序。WΔ_的答案在技术上是正确的,但可能不是您想要的。在Paginate周围使用Reverse将反转页面中的项,但不是整个集合。假设您的集合是字母表中的字母,并且页面大小为3。如果没有Reverse,您可能会看到包含ABC、DEF等的页面。如果您试图更改集合的顺序,您可能会看到ZYX、WVU等。WΔ_的答案将生成CBA、1mn9o1p等。Reverse可以在集合上操作。所以你可以得到Reverse(Match(Index("all_pages")))和Paginate/Map的结果。请注意,对于大型集合,查询可能会失败,因为Reverse必须对整个集合进行操作。
reverse: true
Paginate
Reverse
ABC
DEF
ZYX
WVU
CBA
Reverse(Match(Index("all_pages")))
3条答案
按热度按时间ycl3bljg1#
假设您有一个集合,其中包含带有价格字段的文档,我们将其命名为...呃..。物美价廉!
让我们向集合中添加两个单据,价格分别为1和2。
Image in UI console of the documents
创建常规索引
使用以下代码片段在该价格值上创建常规范围索引:
创建倒排索引
可以有多个值(例如,综合指数),并且可以为每个值设置反转字段。要创建反向索引,请将该特定值的反向设置为TRUE。
如果您转到UI控制台并打开索引,您会注意到这些值从高到低排序。UI console, reverse index
我想让您困惑的是还不能在UI中设置反转布尔值。但是您只需转到Shell并粘贴FQL代码来创建索引:Image of the shell
v6ylcynt2#
我刚刚成功地翻转了一个
Index
。这些文档很有帮助,但它们没有给出实现Map
function
的示例。秘诀是用q.Reverse
PackageMap
和function
:这对你应该很管用!
xmjla07d3#
根据布雷希特的回答,颠倒数据顺序的最佳方式是使用索引。Founa以排序的顺序存储索引项,因此当您的索引使用
reverse: true
时,索引中匹配的项已经以相反的顺序排序。WΔ_的答案在技术上是正确的,但可能不是您想要的。在
Paginate
周围使用Reverse
将反转页面中的项,但不是整个集合。假设您的集合是字母表中的字母,并且页面大小为3。如果没有Reverse
,您可能会看到包含ABC
、DEF
等的页面。如果您试图更改集合的顺序,您可能会看到ZYX
、WVU
等。WΔ_的答案将生成CBA
、1mn9o1p等。Reverse
可以在集合上操作。所以你可以得到Reverse(Match(Index("all_pages")))
和Paginate
/Map
的结果。请注意,对于大型集合,查询可能会失败,因为Reverse
必须对整个集合进行操作。