【发布时间】:2020-01-01 16:06:08
【问题描述】:
我一直坚持使用 ArangoDB 过滤聚合数据
想象一个包含用户文档的图表。每个用户都有许多游戏机。所以图是
用户 -[]-> 游戏控制台
我需要一个查询,列出所有用户及其游戏机。并且我希望能够为具有特定游戏控制台的所有用户进行过滤,但查询结果仍需要显示用户的所有控制台(如果他有多个控制台)
我以 Arango DB 文档中的聚合数据后过滤为例:https://www.arangodb.com/docs/stable/aql/examples-grouping.html 并根据我的需要对其进行了修改:
FOR u IN User
FOR c IN 1..1 OUTBOUND u plays
COLLECT userData = u INTO consoles = c
FILTER "GameConsole/Playstation3" IN consoles
RETURN {userData, consoles}
预期结果
[
{ "userData":
{
"_id": "User/JohnDoe",
"Name": "John Doe"
},
"consoles": [
{
"_id": "GameConsole/Playstation3",
"Name: "Playstation 3"
},
{
"_id": "GameConsole/Wii",
"Name": "Wii"
}
]
}
]
但结果是一个空数组:
[
[]
]
同样
[...]
FILTER consoles == "GameConsole/Playstation3"
FILTER consoles._id == "GameConsole/Playstation3"
FILTER consoles[*]._id == "GameConsole/Playstation3"
显示拥有 Playstation3 的所有用户并列出他们拥有的所有控制台的正确查询/过滤语句是什么?
【问题讨论】: