在 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
,这是一个Iterable
(see 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()
遍历才能执行它,无论该遍历是否用于检索元素(如当前用例)或改变图形。
如果我可以这样检查 属性 的值:
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
,这是一个Iterable
(see 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()
遍历才能执行它,无论该遍历是否用于检索元素(如当前用例)或改变图形。