eri*_*579 2 graph-databases gremlin titan
我正在使用Gremlin查询存储在TitanDB中的图形.
该图包含具有属性的用户顶点,例如"描述",以及表示用户之间关系的边.
我想使用Gremlin来获取1)用户的属性和2)与其他用户的可能关系.例如,我可以使用以下查询来获取描述中包含"开发人员"一词的所有用户以及源自或定位这些用户的标签"关系"的边缘:
g.V('description',CONTAINS,'developer').as('user').bothE.as('relationship').select
Run Code Online (Sandbox Code Playgroud)
到现在为止还挺好.然而,问题是某些用户(还)没有任何关系.上述查询将忽略这些用户(尽管他们的描述包含'开发人员'),并且只会返回至少有一个关系的用户.
有没有办法选择描述中包含"开发者"的所有用户,如果存在,还可以选择他们的关系?
你可以这样做:
g.V('description',CONTAINS,'developer').as('user').transform{it.bothE.toList()}.as('relationship').select
Run Code Online (Sandbox Code Playgroud)
通过这种方式,您应该为那些没有边缘的开发人员获取一个空列表.
在TinkerPop 3.x中,使用TinkerPop现代图表,其中我删除了ID为12的边缘,您可以:
gremlin> g.E(12).drop()
gremlin> g.V().hasLabel('person').as('u').
......1> map(bothE().fold()).as('r').
......2> select('u','r')
==>[u:v[1],r:[e[9][1-created->3],e[7][1-knows->2],e[8][1-knows->4]]]
==>[u:v[2],r:[e[7][1-knows->2]]]
==>[u:v[4],r:[e[10][4-created->5],e[11][4-created->3],e[8][1-knows->4]]]
==>[u:v[6],r:[]]
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
772 次 |
最近记录: |