【问题标题】:gremlin where clause with property and traversal sum带有属性和遍历总和的 gremlin where 子句
【发布时间】:2018-09-27 03:28:11
【问题描述】:

示例图:

g.addV('location').property('name','Location A').as('location')
.addV('building').property('totalLetterCapacity',50).as('building')
.sideEffect(addE('has-building').from('location'))
.addV('letter').property('totalLetters',10).as('a')
.sideEffect(addE('has-letter').from('building'))
.addV('letter').property('totalLetters',10).as('b')
.sideEffect(addE('has-letter').from('building'))
.addV('letter').property('totalLetters',10).as('c')
.sideEffect(addE('has-letter').from('building'))
.addV('letter').property('totalLetters',10).as('d')
.sideEffect(addE('has-letter').from('building'))
.addV('letter').property('totalLetters',10).as('e')
.sideEffect(addE('has-letter').from('building'))

在这个示例图中,我想获取所有满是字母的建筑物。因此,在此示例图中,只有一个位置确实满足要求 - 总共有 50 个字母容量和 5 个具有 10 个容量的字母连接到建筑物。

我希望这样的事情会奏效:

g.V().hasLabel('location')
 .out('has-building')
 .where(values('totalLetterCapacity')
       .is(eq(out('has-letter').values('totalLetters').sum())

但似乎 eq 谓词或任何谓词(lte、lt、gte)不允许遍历。我尝试做某种双重 where 子句 - where 中的 where,但最终变得有点疯狂。

我正在使用 azure cosmos db gremlin。在遍历中使用属性作为总和比较的正确方法是什么?

【问题讨论】:

    标签: azure-cosmosdb gremlin


    【解决方案1】:

    P.eq() 是一个平等的测试,所以像这样:

    values('totalLetterCapacity').is(eq(out('has-letter').values('totalLetters').sum())
    

    是说你想将“totalLetterCapacity”中的数值与匿名Traversal(不是Traversal的结果)进行比较,显然是false

    我立即想到的解决这个问题的方法是这样做:

    gremlin> g.V().hasLabel('location').
    ......1>   out('has-building').as('a').
    ......2>   where('a', eq('a')).
    ......3>     by('totalLetterCapacity').
    ......4>     by(out('has-letter').values('totalLetters').sum())
    ==>v[2]
    

    在上面,where() 将标记为“a”的顶点与标记为“a”的顶点与P.eq() 进行比较,但在该比较中分配的值由提供的by() 调制器确定。第一个“a”是“totalLetterCapacity”,第二个“a”是“letter”顶点上“totalLetters”的sum()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-20
      • 1970-01-01
      • 2017-05-05
      • 1970-01-01
      • 2018-12-02
      • 1970-01-01
      • 2015-09-28
      相关资源
      最近更新 更多