问题:
假设 某个顶点有多度关系【大于2度】,如何一次性获取到该顶点的所有属性以及每一层关联的顶点的属性?对应到dgraph的graphql语句这样写:
dgraph返回的数据是一个嵌套的json格式的数据
在nebula-graph中,如何优雅地实现这种查询?
能否给出具体的使用示例?
问题:
假设 某个顶点有多度关系【大于2度】,如何一次性获取到该顶点的所有属性以及每一层关联的顶点的属性?对应到dgraph的graphql语句这样写:
dgraph返回的数据是一个嵌套的json格式的数据
在nebula-graph中,如何优雅地实现这种查询?
能否给出具体的使用示例?
试过用 GO 加管道的方式,貌似只能比较方便获取到最后一层的数据。如果有多层关系,使用 GO 语法如何同时获取到每一层上的点的全部属性数据呢?
第一想法是可以用match的viable-length-path,同时返回 p=xxxpath 和 length(p)
,
不过beta似乎这个部分还没写完。
@yee
第二想法是
$var1=go 1 step
$var2= go 2 steps
yield $var1.tag.prop, $var2.tag.prop
go n steps 返回的是 dst 的 vid 吧,这里要的是 dst 的全部属性,另外好像也没有支持 $var1.tag.* 之类的语法
你说的是这样吗?
MATCH (v:player{name:"Tim Duncan"})-[e*..2]-(v2) RETURN DISTINCT v2
这样只是拿 v2 的哦,如果还要同时拿 v ,是不是要查两遍。
举个例子,假如关系的这样的: v -> [*] -> v2 -> [*] -> v3,v -> [*] -> v4 -> [*] -> v5 ,需要拿到数据张这样:
{
v.prop1
v.prop2
v2: [
{
v2.prop1
v2.prop2
v3: [
{
v3.prop1,
v3.prop2
}
]
},
{
v2.prop1
v2.prop2
v3: [
{
v3.prop1,
v3.prop2
}
]
}
],
v4: [
{
v4.prop1,
v4.prop2,
v5: [
{
v5.prop1,
v5.prop2
}
]
}
]
}
那么在 nebulagraph 中应该如何查询?
这就是 v 和 v2, 再带上 length§就行了
graphql我不熟
RETURN v, v2就好了
如果下面还有 v3, v4 ,这样查询是不是就会出现很多冗余的数据,具体的数据行数是他们之间的笛卡尔积?
用nodes(p)
MATCH p=(v:player{name:"Tim Duncan"})-[*..3]->() RETURN nodes(p)
再加个length(p)
返回距离