OrientDB:如何将嵌套的继承人权限展平到单个记录中

OrientDB:如何将嵌套的继承人权限展平到单个记录中,orientdb,orientjs,Orientdb,Orientjs,我有一个类似这样的结构: 我如何遍历我的页面并返回一个平面记录,以便每一行都表示来自根节点及其边缘的所有数据。我的用例是生成一个csv文件 从上面的例子中,我想为每个帖子创建一行。每个记录应包含post中的所有字段、语言名称、页面名称和网络名称 据我所知,当您进行任何类型的遍历时,它只提供最终顶点的结果,而不提供中间顶点的任何数据。尝试以下查询: select *,out('posted_to').name as page,out('posted_to').out('is_language')

我有一个类似这样的结构:

我如何遍历我的页面并返回一个平面记录,以便每一行都表示来自根节点及其边缘的所有数据。我的用例是生成一个csv文件

从上面的例子中,我想为每个帖子创建一行。每个记录应包含post中的所有字段、语言名称、页面名称和网络名称

据我所知,当您进行任何类型的遍历时,它只提供最终顶点的结果,而不提供中间顶点的任何数据。

尝试以下查询:

select *,out('posted_to').name as page,out('posted_to').out('is_language').name as language,out('posted_to').out('is_network').name as network from <class Post> unwind page,language,network 
select*,out('posted_to')。名称为页面,out('posted_to')。out('is_language')。名称为语言,out('posted_to')。out('is_network')。名称为从展开页面中的网络,语言,网络

如果每页有许多帖子,那么在页面上锚定查询可能比从帖子开始更有效

因此:


从页面顶点开始,最有效的方法是什么?因为我有很多页面,这些页面有10到数千篇文章,我希望能够通过查询得到一个页面->文章(按日期过滤)->扁平化记录。非常感谢。我有没有办法从查询检索的post rid中展开所有字段?否则,我必须分别指定每个字段吗?例如,focus.in()[name]作为post_name,focus.in()[posted_at]作为post_att当前存在OrientDB缺陷(或bug?),阻止编写“select*,expand(post)from(over)”(其中“over”是上面显示的查询)。另一方面,你可以简单地写
select from Post
:-)对不起,如果我遗漏了一些简单的东西。你是说有一种方法可以从上面的查询中
select from post
,还是说我唯一的选择是恢复到将查询锚定在post上而不是页面上?是的,我的观点非常简单。由于您的POST实体非常多,所以我建议您考虑使用ODB来生成两个单独的表,如果需要的话,您可以稍后加入(例如使用命令行实用程序<代码>连接< /代码>)。
select focus.in() as post,
       focus.name as page,
       focus.out("is_language").name as language,
       focus.out("is_network").name as network
from (select @this as focus from Page)
unwind post, language, network, page

----+------+-----+----+--------+-------
#   |@CLASS|post |page|language|network
----+------+-----+----+--------+-------
0   |null  |#11:0|1   |Welsh   |1      
1   |null  |#11:1|1   |Welsh   |1      
2   |null  |#11:2|1   |Welsh   |1      
3   |null  |#11:3|1   |Welsh   |1      
4   |null  |#11:4|1   |Welsh   |1      
5   |null  |#11:5|1   |Welsh   |1      
6   |null  |#11:6|1   |Welsh   |1      
----+------+-----+----+--------+-------