如何从gremlin中的顶点获取id和所有属性?
我正在使用AWS Neptune和gremlin,我想在一个查询中获得一个顶点的id以及该顶点的所有属性。我该怎么做 我试过了如何从gremlin中的顶点获取id和所有属性?,gremlin,tinkerpop,Gremlin,Tinkerpop,我正在使用AWS Neptune和gremlin,我想在一个查询中获得一个顶点的id以及该顶点的所有属性。我该怎么做 我试过了 g.V().hasLabel('file').valueMap(true) 但结果是: { "fileSize": [ "9170" ], "Gremlin.Net.Process.Traversal.T": "f1fce58306f85ca7050503160640d735c9919c8fc85881d65de80bfe31b5ca24", "mimeType":
g.V().hasLabel('file').valueMap(true)
但结果是:
{ "fileSize": [ "9170" ], "Gremlin.Net.Process.Traversal.T": "f1fce58306f85ca7050503160640d735c9919c8fc85881d65de80bfe31b5ca24", "mimeType": [ "text/html" ] }
没有标签,也没有id。问题在于
project('id','label',' fileSize', 'mimeType', 'malwareSource').
by(id).
by(label).
by('fileSize').
by('mimeType').
by('malwareSource')
属性malwareSource有时是文件顶点的一部分,有时不是。因此,如果没有malwareSource属性,将引发异常。有很多方法,但通常使用
valueMap()
:
在TinkerPop 3.4.0+中,使用by()
的of可以更好地控制输出:
您也可以以各种方式使用project()
,但这需要您知道所有想要获取的密钥。通常,你应该这样做
如果顶点的属性值是可选的,则只需在by()
调制器中创建一个If-then条件:
g.V(1).
project('id','label',' fileSize', 'mimeType', 'malwareSource').
by(id).
by(label).
by('fileSize').
by('mimeType').
by(coalesce(values('malwareSource'),constant('N/A'))
但我不想删除或删除属性。我想把他们和IDwhoa一起放在查询结果中——我真的误解了你的问题。抱歉-更新了我的答案。g.V().hasLabel('file')。valueMap(true)返回:{“fileSize”:[“9170”],“Gremlin.Net.Process.Traversal.T:“f1fce58306f85ca75003160640d735c9919c8fc85881d65de80bfe31b5ca24”,“mimeType”:[“text/html”]}没有id,也没有labelg.V(1)。hasLabel('file').valueMap().by(unfold())。with(WithOptions.ids)在azure和Neptune中引发语法错误异常如果我需要id、标签和以下属性:fileSize、mimeType、malwareSource,如何使用project?
g.V(1).hasLabel("person").valueMap().by(unfold()).with(WithOptions.ids)
g.V(1).
project('id','label',' fileSize', 'mimeType', 'malwareSource').
by(id).
by(label).
by('fileSize').
by('mimeType').
by('malwareSource')
g.V(1).
project('id','label',' fileSize', 'mimeType', 'malwareSource').
by(id).
by(label).
by('fileSize').
by('mimeType').
by(coalesce(values('malwareSource'),constant('N/A'))