首页 文章

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

提问于
浏览
3

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

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

1 回答

  • 2

    .values() 返回 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控制台之外),您必须自己执行Traversal才能执行它,无论Traversal是用于检索元素(如当前用例)还是改变图形 .

相关问题