如何在gremlin查询的has步骤中测试布尔属性的值?

时间:2019-04-22 20:29:51

标签: gremlin traversal janusgraph

我已经用架构定义了一个顶点,并且该顶点的一些属性是布尔型的。我现在正在尝试查询顶点,并根据这些属性的布尔值过滤结果。

我尝试过:

g.V().hasLabel('Patient').has('alcohol_abuse', eq(true))
g.V().hasLabel('Patient').has('alcohol_abuse', true)
g.V().hasLabel('Patient').has('alcohol_abuse', constant(true))
g.V().hasLabel('Patient').has('alcohol_abuse', eq(1))

还有更多变化,没有一个返回正确的结果

我希望获得属性为alcohol_abuse为true的“患者”顶点中的顶点。

谢谢

1 个答案:

答案 0 :(得分:1)

这很奇怪-这个:

g.V().hasLabel('Patient').has('alcohol_abuse', true)

或更简洁地说,

g.V().has('Patient', 'alcohol_abuse', true)

应该工作。我用TinkerGraph做了一个快速测试:

gremlin> g = TinkerGraph.open().traversal()
==>graphtraversalsource[tinkergraph[vertices:0 edges:0], standard]
gremlin> g.addV('Patient').property('alcohol_abuse',true).
......1>   addV('Patient').property('alcohol_abuse',false).iterate()
gremlin> g.V().has('Patient','alcohol_abuse',true).count()
==>1
gremlin> g.V().has('Patient','alcohol_abuse',false).count()
==>1

因此,这绝对是所有TinkerPop实现(包括JanusGraph)的预期结果。如果您没有找到解决问题的方法,则可能需要发布Gremlin Console会话的文本进行演示。