我一直在使用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"
要显示所有拥有Playstation 3的用户并列出他们拥有的所有控制台,正确的查询/过滤语句是什么?
1条答案
按热度按时间n3h0vuf21#
我找到了一个解决方案,由于控制台是一个数组,我需要过滤属性(like _id),所以过滤时需要扩展数组:控制台[*]._id
因此,工作查询为
希望这对其他人有帮助。