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

graph traversal with counts in network for each node

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

我有简单的图表。

用户 - 顶点 hasInAddressBook - 边缘 介绍

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

我要查找的内容如下:

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

示例数据: 约翰 -> hasInAddressBook -> Doe 约翰 -> hasin 地址簿 -> 苏珊 约翰 -> 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

现在我需要的是:

Johns Network 的总人数:结果应该是 4 ,因为 john 介绍了 Doe,Doe 介绍了 3 个人 1+3 = 4

Doe 网络中的总人数:= 3

John 的通讯录总数:5

Doe 的通讯录总数:4

深度没有限制。

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

感谢您的帮助。

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))

这是我从 Studio 执行查询时的屏幕