这是一个非常简单的查询:
g.V('customerId').out().path()
的JSON输出是
{
"requestId":"96b26c1d-d032-2004-d36e-c700bd6db2a2",
"status":{
"message":"",
"code":200,
"attributes":{
"@type":"g:Map",
"@value":[
]
}
},
"result":{
"data":{
"@type":"g:List",
"@value":[
{
"@type":"g:Path",
"@value":{
"labels":{
"@type":"g:List",
"@value":[
{
"@type":"g:Set",
"@value":[
]
},
{
"@type":"g:Set",
"@value":[
]
}
]
},
"objects":{
"@type":"g:List",
"@value":[
{
"@type":"g:Vertex",
"@value":{
"id":"customerId",
"label":"customer"
}
},
{
"@type":"g:Vertex",
"@value":{
"id":"e:customerIdemail@email.com",
"label":"email"
}
}
]
}
}
}
]
},
"meta":{
"@type":"g:Map",
"@value":[
]
}
}
}
现在,客户顶点还包含属性名称和年龄。我想了解的是,如何(如果可能的话)形成我的gremlin查询,以使其嵌套图内的顶点属性。请注意,当我只运行g.V(“ customerId”)时,响应确实包含这些属性。
答案 0 :(得分:3)
您应始终始终准确指定要在遍历中返回的数据。即使是简单的事情:
g.V('customerId')
您真的应该更喜欢:
g.V('customerId').valueMap('name','age')
在SQL中,您可能不会这么做并没有什么不同
SELECT * FROM customer
但是
SELECT name, age FROM customer
对于您的问题,您只需要指定要返回的数据,因此对by()
使用path()
调制器:
g.V('customerId').
out().
path().
by(valueMap('name','age'))
这当然假设您的out()
也是“客户”,否则,只需添加第二个by()
并添加所需的特定字段即可。 by()
调制器以循环方式应用。如果您想使用稍微干净一点的JSON,可以改用project()
,例如:
g.V('customerId').
out().
path().
by(project('name','age').
by('name').
by('age'))
因为这将杀死valueMap()
添加的嵌入列表,以正确说明多属性。