在 Gremlin / TitanDB 中检查顶点 属性 等价性

Checking vertex property equivalency in Gremlin / TitanDB

如果我可以这样检查 属性 的值: g.V().hasLabel('appUser').has('myId','1234').values('isPrivate') ==>false

但是当我检查 false 是否在 if 中时,return 不是我所期望的: if(g.V().hasLabel('appUser').has('myId','1234').values('isPrivate') == 'false'){'is false'}else{'is true'} ==>is true

同样,这也不 return 我所期望的: if(!g.V().hasLabel('appUser').has('myId','1234').values('isPrivate')){'is false'}else{'is true'} ==>is true

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

.values()returns一个Traversal,这是一个Iterablesee TinkerPop 3.1.1 JavaDoc)。您必须调用 .next() 才能实际检索 属性 值。

提供的查询可以这样写

if(!g.V().hasLabel('appUser').has('myId','1234').values('isPrivate').next()){'is false'}else{'is true'}

注意在 .values('isPrivate') 之后立即调用 .next()

使用 Gremlin 控制台时,Traversal 对象会自动迭代 (.iterate()),所以看起来神奇的东西实际上并非如此。在脚本中间(或在 Gremlin 控制台之外),您必须自己 .next().iterate() 遍历才能执行它,无论该遍历是否用于检索元素(如当前用例)或改变图形。