图遍历,每个节点的网络计数

时间:2015-10-24 20:12:10

标签: orientdb

这可能是一个基本问题,但是通过稀疏的文档,我无法弄清楚如何做到这一点。我一般都是orientdb和graph的新手。

我有简单的图表。

用户 - 顶点 hasInAddressBook - edge 引入

用户> hasInAddressBoom->用户 用户> introducedToNetwork->用户

我想要找到的是以下内容:

给定用户名 - >他们的地址簿中有多少用户以及姓名 给定用户名 - >谁做了他们介绍而不考虑深度

示例数据:     约翰 - > hasInAddressBook - > Doe     约翰 - > hasinAddressbook - >苏珊     约翰 - > hasInAddressBook>露西     约翰 - > hasInAddressBook - >工匠     约翰 - > hasInAddressBook - > john1

john -> introducedToNetowrk -> Doe

Doe -> hasinAddressbook -> susan
Doe -> hasInAddressBook > lucy
Doe -> hasInAddressBook -> New1
Doe -> hasInAddressBook -> John

Doe -> introducedToNetwork -> susan
Doe -> introducedToNetwork -> Smith
Doe -> introducedToNetwork -> New1

现在我需要的是:

约翰斯网络总人数:结果应该是4,因为约翰介绍了Doe和Doe介绍3人1 + 3 = 4

Doe网络中的总人数:= 3

约翰的地址簿中的总数:5

Doe的地址簿总数:4

深度没有限制。

我将使用什么SQL / node.js代码来获得上述结果(连同计数,我还需要每个顶点的个体..

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

SELECT name,out("hasInAddressBoom").size() as hasInAddressBoom,sum($p.size(),-1) as introducedToNetwork FROM User
LET $p = ( SELECT FROM (TRAVERSE out("introducedToNetwork") FROM $parent.$current))

答案 1 :(得分:0)

这是我从Studio

执行查询时的屏幕

enter image description here