如何在gremlin中使用多个哈希图在添加顶点时生成动态属性

问题描述 投票:0回答:1

我想使用单个gremlin遍历在我的图形数据库中创建PARENT-HAS_CHILD-> CHILD节点。

问题是PARENT顶点,HAS_CHILD边和CHILD顶点具有不同的属性,并且应来自不同的Hashmap。

我正在将Java api用于gremlin。

我还没有找到任何方法,希望能对此有所帮助。

gremlin graph-databases gremlin-server amazon-neptune
1个回答
0
投票

此问题的答案与使用Map属性动态构造顶点和边的其他问题非常相似。这些模式基本相同,是通过使用unfold()将属性Map解构为成对的流,然后为每个对调用property(k,v)而派生的。此方法在此blog post中进行了详细描述。尽管该文章描述了单个顶点的加载,但是使该示例适应所需内容的能力来自对Gremlin的基本collection manipulation functions的理解。

gremlin> pair = [[name:'marko',age:29,country:'usa'],[name:'stephen',age:33,country:'usa']]
==>[name:marko,age:29,country:usa]
==>[name:stephen,age:33,country:usa]
gremlin> g.withSideEffect('pair',pair).
......1>   addV('person').as('o').
......2>   sideEffect(select('pair').limit(local,1).
......3>              unfold().as('kvo').
......4>              select('o').
......5>              property(select('kvo').by(Column.keys), select('kvo').by(Column.values))).
......6>   addV('person').as('i').
......7>   sideEffect(select('pair').tail(local).
......8>              unfold().as('kvi').
......9>              select('i').
.....10>              property(select('kvi').by(Column.keys), select('kvi').by(Column.values))).
.....11>   addE('knows').
.....12>     from('o').to('i').iterate()
gremlin> g.V().elementMap()
==>[id:0,label:person,country:usa,name:marko,age:29]
==>[id:4,label:person,country:usa,name:stephen,age:33]
gremlin> g.E()
==>e[8][0-knows->4]
© www.soinside.com 2019 - 2024. All rights reserved.