繁体   English   中英

ArangoDB 后过滤聚合数据

[英]ArangoDB Post-filtering aggregated data

我坚持使用 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 的所有用户并列出他们拥有的所有控制台的正确查询/FILTER 语句是什么?

我找到了解决办法。 由于控制台是一个数组,我需要过滤属性(如_id),我需要在过滤时扩展数组:consoles[*]._id

所以工作查询是

FOR u IN User
   FOR c IN 1..1 OUTBOUND u plays
   COLLECT userData = u INTO consoles = c
   FILTER "GameConsole/Playstation3" IN consoles[*]._id
RETURN {userData, consoles}

希望对其他人有帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM