如果我可以检查这样的属性的值:
g.V().hasLabel('appUser').has('myId','1234').values('isPrivate')
==>false
但是当我在false
内检查该值是否为if
时,不会返回我的预期:
if(g.V().hasLabel('appUser').has('myId','1234').values('isPrivate') == 'false'){'is false'}else{'is true'}
==>is true
同样,这也不会返回我期望的内容:
if(!g.V().hasLabel('appUser').has('myId','1234').values('isPrivate')){'is false'}else{'is true'}
==>is true
我应该如何更新它以执行条件检查?
答案 0 :(得分:2)
.values()
返回Traversal
,Iterable
(see TinkerPop 3.1.1 JavaDoc)。您必须调用.next()
才能实际检索属性值。
提供的查询可以这样写。
if(!g.V().hasLabel('appUser').has('myId','1234').values('isPrivate').next()){'is false'}else{'is true'}
请注意在.next()
之后调用.values('isPrivate')
。
使用Gremlin控制台时,Traversal
个对象会自动迭代(.iterate()
),所以看起来神奇的不是。在中间脚本(或在Gremlin控制台之外),您必须自己.next()
或.iterate()
遍历以执行它,无论Traversal是否用于检索元素(如当前用例)或改变图表。