我正在将AWS Neptune与gremlin一起使用,我想在一个查询中获取具有该顶点的所有属性的顶点的ID。我该怎么办?
我尝试过
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')
就是恶意软件Source属性有时是文件顶点的一部分,有时不是。因此,如果没有恶意软件来源属性,则会引发异常。
答案 0 :(得分:1)
有很多方法,但通常使用valueMap()
:
g.V(1).valueMap(true)
在TinkerPop 3.4.0+中,使用by()
的{{3}}可以更好地控制输出:
g.V(1).hasLabel("person").valueMap().by(unfold()).with(WithOptions.ids)
您还可以通过各种方式使用project()
,但这需要您知道所有想要抓取的钥匙。通常,您应该addition。
g.V(1).
project('id','label',' fileSize', 'mimeType', 'malwareSource').
by(id).
by(label).
by('fileSize').
by('mimeType').
by('malwareSource')
如果属性值对于顶点是可选的,则只需在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'))