我有下图: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”值
亲切的问候斯特凡
获取 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]]]