OrientDB查询社交网络中朋友的朋友

OrientDB查询社交网络中朋友的朋友,orientdb,Orientdb,我有一个关于如何创建OrientDB查询的问题。 查询应按深度计算好友关系中好友的顶点 我正在运行OrientDB 2.1.6 模式: Person是一个顶点,属性id为int 朋友是优势 我正在寻找的关系如下: 人-朋友->人-朋友->人 12:012:112:2 我有一百万个顶点和一百万个边。 每个顶点都有100条带有随机顶点的边 我想从顶点12:0开始,计算在深度2,3,4和5中有多少个顶点。 我想将查询性能(以毫秒为单位)与Neo4j进行比较 有人能帮我吗? 在OrientDB上查询此信

我有一个关于如何创建OrientDB查询的问题。 查询应按深度计算好友关系中好友的顶点

我正在运行OrientDB 2.1.6

模式: Person是一个顶点,属性id为int 朋友是优势

我正在寻找的关系如下:

人-朋友->人-朋友->人 12:012:112:2

我有一百万个顶点和一百万个边。 每个顶点都有100条带有随机顶点的边

我想从顶点12:0开始,计算在深度2,3,4和5中有多少个顶点。 我想将查询性能(以毫秒为单位)与Neo4j进行比较

有人能帮我吗? 在OrientDB上查询此信息的最快方法是什么? 对不起,英语不好


谢谢大家

试试这个:选择@rid,outFriend.size from traverse out from 12:0,$depth如果您想获得深度2处的顶点数,深度3处的顶点数,等等,您可以使用这个查询

select $depth,count(*) from (traverse out() from #12:0 while $depth<=5) where $depth>=2 group by $depth
select count(*) from (traverse out() from #12:0 while $depth<=5) where $depth>=2
如果要求深度为2,3,4,5的顶点总数 您可以使用此查询

select $depth,count(*) from (traverse out() from #12:0 while $depth<=5) where $depth>=2 group by $depth
select count(*) from (traverse out() from #12:0 while $depth<=5) where $depth>=2

您可能希望使用out'Friend'而不仅仅是out,因为数据库中可能有其他类型的扩展边界。更好的是,如果边界方向在您的域中没有意义,您可以同时使用这两个'Friend'。例如,如果我是您的朋友,您也应该是我的朋友,根据文档,如果你有一个固定的深度,那么你可以做out'Friend'。out'Friend'为2级深度,速度会更快。