如何解决Tinkerpop:选择不包含具有属性的顶点的路径的顶点
在Tinkerpop中,我要选择不直接连接到属性foo
等于bar
的顶点的顶点
例如:
Vertex user1 = graph.addVertex("vid","one");
Vertex user2 = graph.addVertex("vid","two");
Vertex user3 = graph.addVertex("vid","three");
Vertex tag1 = graph.addVertex("tagKey","tagKey1");
Vertex tag2 = graph.addVertex("tagKey","tagKey2");
Vertex tag3 = graph.addVertex("tagKey","tagKey3");
user1.addEdge("user_tag",tag1);
user2.addEdge("user_tag",tag2);
user2.addEdge("user_tag",tag3);
在上述测试用例中,我想选择所有未连接到user
且值为tagKey
的标签顶点的tagKey2
顶点。输出应为2个顶点user3,user 1
解决方法
查询以获取未连接到标签的顶点。
g.V().hasLabel("Vertex").
filter(
not(outE().hasLabel('connected'))
).
properties()
查询以添加顶点数据:
g.addV('Vertex').as('1').property(single,'name','One').
addV('Vertex').as('2').property(single,'Two').
addV('Vertex').as('3').property(single,'Three').
addV('Vertex').as('4').property(single,'Four').
addV('Tag').as('5').property(single,'Key1').
addV('Tag').as('6').property(single,'Key2').
addV('Tag').as('7').property(single,'Key3').
addE('connected').from('1').to('5').
addE('connected').from('2').to('6').
addE('connected').from('4').to('7')
Gremlify链接:https://gremlify.com/f1muf12xhdv/2
,您可以结合使用not
和where
步骤来实现此目的:
g.V().hasLabel('User').
not(where(out('user_tag').has('tagKey','tagKey2'))).
valueMap().with(WithOptions.tokens)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。