我有2个顶点,一个是USER,一个是PLACE,任何用户都可以查看某个地方,任何用户都可以对该评论进行评论或评论。在这种情况下,将有两个边缘存储由任何用户在任何地方完成的审查,一个存储在该审查上完成的任何类型的活动。假设我需要在任何地方获取所有评论,并在一个查询中查看每个评论的相似和评论计数,我该如何编写此类查询。
答案 0 :(得分:0)
假设您使用用户和地点来存储顶点和边活动,审核和标签评论,赞或审核以存储您可以使用深度为1的图遍历的活动,即使用地方集合的所有顶点作为起始顶点。
以下查询会遍历所有地方文档,并为每个文档返回赞,评论和评论。
FOR vertex IN place
LET likes = LENGTH (FOR v, e, p IN 1..1 ANY vertex review, activity FILTER p.edges[0].label == 'like' RETURN 1)
LET reviews = (FOR v, e, p IN 1..1 ANY vertex review, activity FILTER p.edges[0].label == 'review' RETURN p.edges[0].rv)
LET comments = LENGTH (FOR v, e, p IN 1..1 ANY vertex review, activity FILTER p.edges[0].label == 'comment' RETURN 1)
RETURN {place:vertex.name, likes:likes, reviews: reviews, comments: comments}
过滤器指定遍历边的活动。标签 like / comment 的边数量表示此地点的喜欢/评论数量,而评论遍历则返回带有 rv 属性的评论保存在边缘。