涉及边缘属性数量检查的gremlin查询

时间:2019-07-15 06:40:09

标签: graph-databases gremlin traversal

我具有用于图形数据库的this模式。

我需要从picked X的连接的所有calls标签中找到拥有program个电话的用户。

我对gremlin还是陌生的,我的词汇量有限。

我想找到一种方法来检查对于给定的picked == yes X,用program向用户输入的边缘的数量是否等于用户输入的边缘总数。是,如果从程序X到通过调用的用户的每个边都包含picked == yes

我无法在同一查询中计数两次,无法比较这些值来确定用户是否满足条件。我的方法如下:

g.V().hasLabel("User").filter(inE().count().is(neq(0))).filter(inE().outV().in().has("program","name","X")).filter(inE().has("connected","yes").has("picked","no").count().is(eq(0))).values("name")

从本质上讲,我正在除去所有我不会导致预期结果的情况(“用户”中的空节点,已连接但未接听的用户)。当我根据手动检查结果测试它时,不会生成正确的输出。

谢谢!

1 个答案:

答案 0 :(得分:0)

仅从描述中,我会说这是您的查询:

g.V().hasLabel('User').
  filter(project('a','b').
           by(inE().has('picked','yes').count()).
           by(out().has('program','X').count()).
         where('a',eq('b')))

如果未返回预期结果,请提供一个片段,以创建一个带有预期结果的小样本图。