结合where使用Project + valueMap

问题描述 投票:0回答:1

我有下图:https://gremlify.com/vxkibjtoz3b 如果您无法打开链接,则图表会显示以下内容:

你可以看到有 2 个查询。第一个:

g.V().out("r").as("a").V().out("rl_pre").out("rl").as("b").where("a", eq("b")).by("attr").select("a", "b")

给我所有共享相同“attr”值的顶点。在第二个查询中:

g.V().out("r").as("a").V().hasLabel("start").project("lower_pre", "lower"). by(__.out("rl_pre").valueMap("lower_pre_prop")) by(__.out("rl_pre").out("rl").as("b").where("a", eq("b")).by("attr").valueMap("attr"))

我尝试将第一个查询与“project”和“valueMap”结合起来,以获取以前属性的一些值。不幸的是,第二个查询不起作用。有谁知道谁可以结合“where”子句获得前顶点的属性+图形遍历结束顶点中的属性?

预期产出

我希望获得所有顶点对(“上部和下部”)共享相同的属性值(“attr”)+我想从起始顶点获得“start_attribute”值

亲切的问候斯特凡

gremlin amazon-neptune tinkerpop3 graph-traversal gremlinpython
1个回答
0
投票

获取 Gremlify 数据并稍微打印它给我们:

g.addV('wrong_node').as('1').property(single, 'attr', 0).
  addV('start').as('2').
  addV('upper').as('3').property(single, 'attr', 1).
  addV('lower').as('4').property(single, 'attr', 1).
  addV('lower_pre').as('5').property(single, 'lower_pre_prop', 666).
  addV('lower_wrong').as('6').property(single, 'attr', 2).
  addV('upper_2').as('7').property(single, 'attr', 1).
  addE('r').from('2').to('7').
  addE('r').from('2').to('3').
  addE('r').from('2').to('1').
  addE('rl_pre').from('2').to('5').
  addE('rl').from('5').to('4').
  addE('rl').from('5').to('6') 

使用该样本图,查询可以简化为:

gremlin> g.V().hasLabel('start').as('s').
......1>   out('r').as('a').
......2>   V().hasLabel('start').
......3>   out('rl_pre').
......4>   out('rl').
......5>   where(eq('a')).
......6>     by('attr').as('b').
......7>   select('s','a','b').
......8>     by().
......9>     by(valueMap(true,'attr')).
.....10>     by(valueMap(true,'attr'))  

产生(我没有看到“start_attribute”属性所以忽略了那部分)

==>[s:v[2],a:[id:11,label:upper_2,attr:[1]],b:[id:5,label:lower,attr:[1]]]
==>[s:v[2],a:[id:3,label:upper,attr:[1]],b:[id:5,label:lower,attr:[1]]]   
© www.soinside.com 2019 - 2024. All rights reserved.