Gremlin:如何获取起始顶点的 属性 `id`?
Gremlin: how to get the property `id` of the from vertex?
我是 Gremlin 新手,我只尝试 select 示例图中 from
和 to
顶点的几个属性以及 属性 id
from
个顶点。这是我创建图表的方式:
g.addV('asset').property(id, 'a1').property('ip', '127.4.8.51').property('scanDate', '2020-09-10').property('repoId', 1)
g.addV('asset').property(id, 'a2').property('ip', '127.4.8.55').property('scanDate', '2020-09-20').property('repoId', 1)
g.addV('asset').property(id, 'a3').property('ip', '127.4.8.57').property('scanDate', '2020-09-21').property('repoId', 1)
g.addV('asset').property(id, 'a4').property('ip', '127.4.10.36').property('scanDate', '2020-09-12').property('repoId', 2)
g.addV('asset').property(id, 'a5').property('ip', '127.4.10.75').property('scanDate', '2020-09-14').property('repoId', 2)
g.addV('repo').property(id, 'r1').property('repoName', 'repo1').property('assetAge', 10).property('repoId', 1)
g.addV('repo').property(id, 'r2').property('repoName', 'repo2').property('assetAge', 9).property('repoId', 2)
g.V('a1').addE('has').to(g.V('r1'))
g.V('a2').addE('has').to(g.V('r1'))
g.V('a3').addE('has').to(g.V('r1'))
g.V('a4').addE('has').to(g.V('r2'))
g.V('a5').addE('has').to(g.V('r2'))
这是我如何获得 asset.scanDate
(from
顶点)和 repo.assetAge
(to
顶点)属性:
gremlin> g.V().hasLabel("asset").as("a").out("has").as('b').select('a', 'b').by('scanDate').by('assetAge')
==>{a=2020-09-20, b=10}
==>{a=2020-09-12, b=9}
==>{a=2020-09-21, b=10}
==>{a=2020-09-14, b=9}
==>{a=2020-09-10, b=10}
我希望结果如下所示:
==>{id=a2, scanDate=2020-09-20, assetAge=10}
==>{id=a4, scanDate=2020-09-12, assetAge=9}
==>{id=a3, scanDate=2020-09-21, assetAge=10}
==>{id=a5, scanDate=2020-09-14, assetAge=9}
==>{id=a1, scanDate=2020-09-10, assetAge=10}
非常感谢任何帮助;谢谢。
您可以使用 Gremlin 中的 project() 步骤完成此操作,如下所示
g.V().
hasLabel("asset").as("a").
out("has").
project('id', 'a', 'b').
by(select('a').id()).
by(select('a').values('scanDate')).
by(values('assetAge'))
我是 Gremlin 新手,我只尝试 select 示例图中 from
和 to
顶点的几个属性以及 属性 id
from
个顶点。这是我创建图表的方式:
g.addV('asset').property(id, 'a1').property('ip', '127.4.8.51').property('scanDate', '2020-09-10').property('repoId', 1)
g.addV('asset').property(id, 'a2').property('ip', '127.4.8.55').property('scanDate', '2020-09-20').property('repoId', 1)
g.addV('asset').property(id, 'a3').property('ip', '127.4.8.57').property('scanDate', '2020-09-21').property('repoId', 1)
g.addV('asset').property(id, 'a4').property('ip', '127.4.10.36').property('scanDate', '2020-09-12').property('repoId', 2)
g.addV('asset').property(id, 'a5').property('ip', '127.4.10.75').property('scanDate', '2020-09-14').property('repoId', 2)
g.addV('repo').property(id, 'r1').property('repoName', 'repo1').property('assetAge', 10).property('repoId', 1)
g.addV('repo').property(id, 'r2').property('repoName', 'repo2').property('assetAge', 9).property('repoId', 2)
g.V('a1').addE('has').to(g.V('r1'))
g.V('a2').addE('has').to(g.V('r1'))
g.V('a3').addE('has').to(g.V('r1'))
g.V('a4').addE('has').to(g.V('r2'))
g.V('a5').addE('has').to(g.V('r2'))
这是我如何获得 asset.scanDate
(from
顶点)和 repo.assetAge
(to
顶点)属性:
gremlin> g.V().hasLabel("asset").as("a").out("has").as('b').select('a', 'b').by('scanDate').by('assetAge')
==>{a=2020-09-20, b=10}
==>{a=2020-09-12, b=9}
==>{a=2020-09-21, b=10}
==>{a=2020-09-14, b=9}
==>{a=2020-09-10, b=10}
我希望结果如下所示:
==>{id=a2, scanDate=2020-09-20, assetAge=10}
==>{id=a4, scanDate=2020-09-12, assetAge=9}
==>{id=a3, scanDate=2020-09-21, assetAge=10}
==>{id=a5, scanDate=2020-09-14, assetAge=9}
==>{id=a1, scanDate=2020-09-10, assetAge=10}
非常感谢任何帮助;谢谢。
您可以使用 Gremlin 中的 project() 步骤完成此操作,如下所示
g.V().
hasLabel("asset").as("a").
out("has").
project('id', 'a', 'b').
by(select('a').id()).
by(select('a').values('scanDate')).
by(values('assetAge'))