使用嵌套顶点查询结果

时间:2017-09-08 05:57:55

标签: orientdb

[OrientDB初学者在这里..]

我有如下数据结构:

User <[PostEdge]- Post <[CommentEdge]- Post
                     ^[CommentEdge]- Post
                     ^[CommentEdge]- Post

因此,帖子通过PostEdge与用户相关,而另一篇帖子可能通过CommentEdge与帖子相关。

我试图查询一个数据结构,它给出了类似下面的内容:

[
    {
    content: "",
    comments: [{content: ""}, {content: ""}, {content: ""}],
    poster: {name: ""}
    }
]

我到目前为止最接近的是......

SELECT uuid, content, created_on, IN('CommentEdge') as comments, in('PostEdge') as poster
        FROM (SELECT expand(out('PostEdge')) FROM #28:0)
        WHERE outE('CommentEdge').size() = 0

这会让我回复一下......

[
    {content: "", comments: [#12:0, #13:0, #14:0], poster: [#15:0]}
]

我花了很多时间试图解决这个问题,而且我已经做好了。那,我相当肯定&#39; FROM(选择.....'部分并不是一个好主意。所以,首先,是否有一个功能或某些东西,我是...缺少包括那些记录而不仅仅是回复记录ID?第二,有没有更好的方法来做我想做的事情?(我认为有,我还没有在那里诀窍)。

1 个答案:

答案 0 :(得分:0)

所以,我所寻找的是'fetchplan'。这最终解决了我的问题。

https://orientdb.com/docs/2.2/Fetching-Strategies.html

本质上,fetchplan是一条告诉查询扩展/遍历链接文档的指令。

我的接近结果就像..

SELECT content, uuid, created_on, @rid, in('CommentEdge') as comments
FROM (SELECT expand(out('PostEdge')) FROM :userId WHERE outE('CommentEdge').size() = 0 )
FETCHPLAN comments:1