检查Gremlin / TitanDB中的顶点属性等效性

时间:2016-04-12 17:26:48

标签: titan gremlin

如果我可以检查这样的属性的值: 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

我应该如何更新它以执行条件检查?

1 个答案:

答案 0 :(得分:2)

.values()返回TraversalIterablesee 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是否用于检索元素(如当前用例)或改变图表。