【问题标题】:Checking vertex property equivalency in Gremlin / TitanDB检查 Gremlin / TitanDB 中的顶点属性等效性
【发布时间】:2016-04-12 17:26:48
【问题描述】:

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

但是当我在if 中检查该值是否为false 时,不会返回我所期望的: 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

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

【问题讨论】:

    标签: titan gremlin


    【解决方案1】:

    .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'}
    

    注意在.values('isPrivate') 之后对.next() 的调用。

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

    【讨论】:

      猜你喜欢
      • 2023-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-27
      • 1970-01-01
      • 1970-01-01
      • 2017-12-19
      相关资源
      最近更新 更多