使用场景对 GRAPH 查询建模

Modelling GRAPH query with scenario

我有 2 个顶点,一个是 USER,一个是 PLACE,任何用户都可以评论一个地方,任何用户都可以喜欢或评论该评论。在这种情况下,将有两条边,一条存储任何用户在任何地方所做的评论,另一条存储对该评论所做的任何类型的 activity。假设我需要在单个查询中获取任何地方的所有评论以及每个评论的喜欢和评论计数,我该如何编写这样的查询。

假设您正在使用 userplace 来存储您的顶点和边 activity, review with labels comment, like or review to store the activity you could use graph traversals with depth 1,使用 place 集合的所有顶点作为起始顶点。

以下查询遍历所有 place 文档,并对每个文档 returns 点赞、评论和评论。

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}

过滤器指定遍历边的activity。标签为 like/comment 的边数表示该地点的 likes/comments 数量,而 reviews 遍历 returns 属性为 rv 的评论保存在 edge.