通常,如果您有很多边,则查看图中的所有边可能会很昂贵。在大图上执行此操作通常不是一个好主意。我在下面的示例中使用了一个限制步骤,这是查看某些边缘的一种方法。但是,也就是说,您可以使用valueMap 查看边缘上的所有属性。例如(根据我的跟踪足球比赛的图表):
gremlin> g.E().valueMap().with(WithOptions.tokens).limit(5)
==>[id:400,label:played,date:12 Apr 2014,result:1-0]
==>[id:401,label:played,date:12 Apr 2014,result:1-0]
==>[id:402,label:played,date:12 Apr 2014,result:0-1]
==>[id:403,label:played,date:12 Apr 2014,result:1-0]
==>[id:404,label:played,date:12 Apr 2014,result:0-1]
编辑添加:
如果您想在结果中包含相邻顶点,并且您使用的图形数据库支持 3.4.4 或更高级别的 Apache TinkerPop,您可以使用elementMap 步骤。下面是一个例子。
gremlin> g.E().limit(5).elementMap()
==>[id:34,label:member,IN:[id:1,label:EPL],OUT:[id:2,label:Team],years:22]
==>[id:35,label:member,IN:[id:1,label:EPL],OUT:[id:3,label:Team],years:22]
==>[id:36,label:member,IN:[id:1,label:EPL],OUT:[id:4,label:Team],years:22]
==>[id:37,label:member,IN:[id:1,label:EPL],OUT:[id:5,label:Team],years:22]
==>[id:38,label:member,IN:[id:1,label:EPL],OUT:[id:6,label:Team],years:22]
如果您使用的数据库不支持elementMap,您需要执行以下操作:
gremlin> g.E().limit(5).
......1> project('EDGE','IN','OUT').
......2> by(valueMap().with(WithOptions.tokens)).
......3> by(inV().union(id(),label()).fold()).
......4> by(outV().union(id(),label()).fold())
==>[EDGE:[id:34,label:member,years:22],IN:[1,EPL],OUT:[2,Team]]
==>[EDGE:[id:35,label:member,years:22],IN:[1,EPL],OUT:[3,Team]]
==>[EDGE:[id:36,label:member,years:22],IN:[1,EPL],OUT:[4,Team]]
==>[EDGE:[id:37,label:member,years:22],IN:[1,EPL],OUT:[5,Team]]
==>[EDGE:[id:38,label:member,years:22],IN:[1,EPL],OUT:[6,Team]]