我在动物群db上创建了一个排序索引,以便按时间戳排序,以便首先获取最新的项目,我试图一次检索100个项目,问题是当我从结果中输入after参数时,我收到的结果与初始结果相同。
这是我创建的索引
CreateIndex({
name: "all_school_queries",
source: Collection('<school_queries_reversed>'),
values: values: [
{
field: ["ts", {reverse: true}]
},
{
field: ["ref"]
}
]
})
这就是我查询数据库的方式
Map(
Paginate(Match(Index("school_query_reverse")), {
after: [ Ref(Collection("collection_name") ,'collection ref from first query')],
}),
Lambda(
['ts',"ref"],
Get(Var("ref"))
)
)
这是第一个结果
{
before: [Ref(Collection("collection_name"), "275484304279077376")],
after: [
1598907150720000,
Ref(Collection("school_queries"), "12345"),
Ref(Collection("school_queries"), "12345")
],
***我在1598907150720000之后都使用了tiemtamp和参考文献12345。我首先尝试在控制台上确保收到正确的响应,但是从之后输入任何一个结果时,我都得到相同的结果。 / p>
答案 0 :(得分:1)
我将尝试回答您的问题(我是FaunaDB的开发助理)。我不得不说,由于语法对我来说似乎没有意义,因此我对您的问题感到很困惑,因此,如果您不是您要找的答案,我深表歉意。
我很困惑的事情。
不过没关系,我尝试重现您的问题,因为我不知道数据的外观,因此我将其简化了。
我使用的索引如下:
CreateIndex({
name: "all_school_queries",
source: Collection('school_queries'),
values: [
{
field: ["ts"],
reverse: true
},
{
field: ["ref"]
}
]
})
如果我再按以下方式查询此索引:
Map(
Paginate(Match(Index("all_school_queries")), {size: 1}),
Lambda(
['ts',"ref"],
Get(Var("ref"))
)
)
我确实得到了我首先添加的最后一个元素(反向索引)
{
after: [
1599220462170000,
Ref(Collection("school_queries"), "275735235372515847"),
Ref(Collection("school_queries"), "275735235372515847")
],
data: [
{
ref: Ref(Collection("school_queries"), "275735244842205703"),
ts: 1599220471200000,
data: {
query: "bli"
}
}
]
}
,当我使用返回的after游标获取下一页时(这里我仅指定了一个元素的页面):
Map(
Paginate(Match(Index("all_school_queries")), {size: 1, after: [
1599220462170000,
Ref(Collection("school_queries"), "275735235372515847"),
Ref(Collection("school_queries"), "275735235372515847")
]}),
Lambda(
['ts',"ref"],
Get(Var("ref"))
)
)
我确实得到了预期的其他元素。
{
before: [
1599220462170000,
Ref(Collection("school_queries"), "275735235372515847"),
Ref(Collection("school_queries"), "275735235372515847")
],
data: [
{
ref: Ref(Collection("school_queries"), "275735235372515847"),
ts: 1599220462170000,
data: {
query: "bla"
}
}
]
}
那对你不起作用吗?