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

时间:2015-11-27 01:05:22

标签: orientdb

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

我正在运行OrientDB 2.1.6。

架构: Person是Vertex,属性id(int) 朋友是边缘

我正在寻找的关系是这样的:

人 - 朋友 - >人 - 朋友 - >人 (#12:0)(#12:1)(#12:2)

我有1百万个顶点和100毫米边缘。 每个顶点都有100个具有随机顶点的边。

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

有人能帮助我吗? 在OrientDB上查询此问题的最快方法是什么? 抱歉英文不好。

谢谢你们

2 个答案:

答案 0 :(得分:1)

如果要获取深度为2的顶点数,深度为3的顶点数等,可以使用此查询

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

如果你想在深度2,3,4,5处总计有多少个顶点 你可以使用这个查询

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

答案 1 :(得分:0)

试试这个:select @rid,out("Friend").size() from (traverse out() from #12:0 while $depth<=5)

此致