示例数据库:TinkerPop Modern
目标:查找尚未开发软件的人。
即。顶点类型“人物”未直接连接到顶点类型“软件”
与软件相关的人 [作品]
g.V().hasLabel("Person").as("from")
.project("title", "node")
.by(select("from").unfold().values("name").fold())
.by(select("from").unfold().label().fold())
查找未与软件连接的人 [无效]
g.V().hasLabel("Person").as("from")
.filter(both().not(hasLabel("Software")))
.project("title", "node")
.by(select("from").unfold().values("name").fold())
.by(select("from").unfold().label().fold())
我认为它忽略了一个不满足条件的边缘,但是没有跳过顶点。
试图做一个循环,但没有找到它的例子。
Cypher Query等效项(仅供参考):MATCH(n:People)WHERE NOT(n) - (:Software)RETURN n
示例数据库:
答案 0 :(得分:1)
我认为您只需要更改过滤条件:
gremlin> g.V().hasLabel('person').
......1> filter(__.not(outE('created'))).
......2> project("title", "node").
......3> by('name').
......4> by(label)
==>[title:vadas,node:person]
正如您所看到的,您也无需出于任何原因选择返回as()
步骤 - 您已将该顶点作为project()
中的当前遍历。