- 问题的具体描述
假设这样的场景,点player之间有两种边,follow和like
我想通过一条查询语句输出,一个player 分别follow了哪些 player 、like了哪些player
返回包括三个字段:playerID, followIDs, likeIDs
统计一种边可以使用GROUP BY
GO FROM "player100" OVER follow \
YIELD $^.id AS playerID, $$.id as followID \
| GROUP BY $-.playerID \
YIELD $-.playerID as playerID, collect($-.followID) AS followIDs;
如果统计两种边,是不是要写成这样
GO FROM "player100" OVER follow \
YIELD follow._src AS playerID, follow._dst AS followID \
| GROUP BY $-.playerID \
YIELD $-.playerID as playerID, collect($-.followID) AS followIDs \
| GO FROM playerID OVER like \
YIELD $-.playerID as playerID, $-.followIDs AS followIDs, like._dst AS likeID \
| GROUP BY $-.playerID, $-.followIDs \
YIELD $-.playerID as playerID, $-.followIDs AS followIDs, collect($-.likeID) AS likeIDs \
感觉有点浪费性能,有没有更加优雅的写法