Return 特定用户 ID 的所有数据按 Fauna DB 中的最新日期排序
Return all data by specific userID sorted by newest date in Fauna DB
我正在尝试进行动物群查询,该查询将从特定用户检索 所有 数据,按最新创建的排序。
在他们的文档 (https://docs.fauna.com/fauna/current/tutorials/indexes/sort#multiple) 中有如何处理多个数据的步骤,您必须在值中指定,因为集合中有很多字段,有时我不知道他们的名称 我想要这样的结果
"data": [
{
"ref": Ref(Collection("Planets"), "267081152090604051"),
"ts": 1590967285200000,
"data": {
"name": "Jupiter",
"type": "GAS",
"userID": "12344",
"created": "1639665397555"
}
},
{
"ref": Ref(Collection("Planets"), "267081181884842515"),
"ts": 1590967313610000,
"data": {
"name": "Saturn",
"type": "GAS",
"userID": "12344",
"created": "1639665397446"
}
}
]
}
那么可以这样查询吗:
SELECT * FROM plantes WHERE userID="12233" ORDER BY created ASC
在不指定要检索哪些字段的情况下,我想要所有这些字段,而不管名称只是按 UserID 过滤并排序。
这是我创建的索引:
CreateIndex({
name: "get_user_planets_3",
source: Collection("planets"),
terms: [
{
field: ["data", "userID"]
}
],
values: [
{ field: ["data", "created"], reverse: true },
{ field: ["data", "name"] },
{ field: ["data", "type"] },
]
})
但我不想指定字段名称我想要它们,不管名称只是按日期排序。
谢谢
为了检索所选集合的所有数据,return 索引中的 ref
字段 values
然后是 Map
和 Get
文件。
索引如下:
CraeteIndex({
name: "get_user_planets_3",
source: Collection("planets"),
terms: [
{
field: ["data", "userID"]
}
],
values: [
{ field: ["data", "created"], reverse: true },
{ field: ["ref"] } // <-- use this to retrieve the whole Document
]
})
您可以使用如下请求检索文档的所有数据:
Map(
Paginate(Match(Index("get_user_planets_3"), "12233")),
Lambda(
// each Index value is passed to the mapping function
["created", "ref"],
Get(Var("ref"))
)
)
请注意,由于 Get
调用,每个文档至少需要 1 次读取操作。如果您想节省读取成本,那么您应该针对需要接收的数据优化查询。甚至还有一些方法可以让您的集合拥有多个索引,并让调用者根据需要选择哪些索引。这都是你自己的应用需要考虑的权衡。
我正在尝试进行动物群查询,该查询将从特定用户检索 所有 数据,按最新创建的排序。
在他们的文档 (https://docs.fauna.com/fauna/current/tutorials/indexes/sort#multiple) 中有如何处理多个数据的步骤,您必须在值中指定,因为集合中有很多字段,有时我不知道他们的名称 我想要这样的结果
"data": [
{
"ref": Ref(Collection("Planets"), "267081152090604051"),
"ts": 1590967285200000,
"data": {
"name": "Jupiter",
"type": "GAS",
"userID": "12344",
"created": "1639665397555"
}
},
{
"ref": Ref(Collection("Planets"), "267081181884842515"),
"ts": 1590967313610000,
"data": {
"name": "Saturn",
"type": "GAS",
"userID": "12344",
"created": "1639665397446"
}
}
]
}
那么可以这样查询吗:
SELECT * FROM plantes WHERE userID="12233" ORDER BY created ASC
在不指定要检索哪些字段的情况下,我想要所有这些字段,而不管名称只是按 UserID 过滤并排序。
这是我创建的索引:
CreateIndex({
name: "get_user_planets_3",
source: Collection("planets"),
terms: [
{
field: ["data", "userID"]
}
],
values: [
{ field: ["data", "created"], reverse: true },
{ field: ["data", "name"] },
{ field: ["data", "type"] },
]
})
但我不想指定字段名称我想要它们,不管名称只是按日期排序。
谢谢
为了检索所选集合的所有数据,return 索引中的 ref
字段 values
然后是 Map
和 Get
文件。
索引如下:
CraeteIndex({
name: "get_user_planets_3",
source: Collection("planets"),
terms: [
{
field: ["data", "userID"]
}
],
values: [
{ field: ["data", "created"], reverse: true },
{ field: ["ref"] } // <-- use this to retrieve the whole Document
]
})
您可以使用如下请求检索文档的所有数据:
Map(
Paginate(Match(Index("get_user_planets_3"), "12233")),
Lambda(
// each Index value is passed to the mapping function
["created", "ref"],
Get(Var("ref"))
)
)
请注意,由于 Get
调用,每个文档至少需要 1 次读取操作。如果您想节省读取成本,那么您应该针对需要接收的数据优化查询。甚至还有一些方法可以让您的集合拥有多个索引,并让调用者根据需要选择哪些索引。这都是你自己的应用需要考虑的权衡。