hasNot() 无效
hasNot() having no effect
我在 Amazon Neptune 上通过 Jupiter Notebook 使用 gremlin 遍历。
我试图通过标签从特定顶点过滤边,但它似乎不起作用。
一些示例数据:
%%gremlin
g.addV().property(id, 'u0').as('u0').
addV().property(id, 'u1').as('u1').
addV().property(id, 'u2').as('u2').
addV().property(id, 'u3').as('u3').
addE('freind').
from('u0').
to('u1').
addE('buddy').
from('u0').
to('u2').
addE('foe').
from('u0').
to('u3').
iterate()
我的查询:
(它比这个例子需要的更复杂,但我的实际查询重复了几次,因此我不能简单地使用 has('friend').has('buddy') 因为下一步还有其他标签.)
%%gremlin
g.withSack(1.0f).V('u0')
.repeat(
bothE().hasNot('foe')
.bothV())
.times(1)
.path().by().by(label)
输出:
path[v[u0], freind, v[u1]]
path[v[u0], buddy, v[u2]]
path[v[u0], foe, v[u3]]
我有一个用户,我从 (u0) 开始,希望所有用户都是他的朋友、伙伴等,但不是他的敌人。
不幸的是,它没有像预期的那样过滤...
知道我做错了什么吗?
hasNot()
步骤将仅过滤掉具有指定名称的 属性 的元素,在本例中为名为 foe
的 属性。相反,您应该考虑使用 not()
和 hasLabel()
来查找没有特定标签的项目,如下所示:
g.withSack(1.0f).V('u0')
.repeat(
bothE().not(hasLabel('foe'))
.bothV())
.times(1)
.path().by().by(label)
我在 Amazon Neptune 上通过 Jupiter Notebook 使用 gremlin 遍历。
我试图通过标签从特定顶点过滤边,但它似乎不起作用。
一些示例数据:
%%gremlin
g.addV().property(id, 'u0').as('u0').
addV().property(id, 'u1').as('u1').
addV().property(id, 'u2').as('u2').
addV().property(id, 'u3').as('u3').
addE('freind').
from('u0').
to('u1').
addE('buddy').
from('u0').
to('u2').
addE('foe').
from('u0').
to('u3').
iterate()
我的查询:
(它比这个例子需要的更复杂,但我的实际查询重复了几次,因此我不能简单地使用 has('friend').has('buddy') 因为下一步还有其他标签.)
%%gremlin
g.withSack(1.0f).V('u0')
.repeat(
bothE().hasNot('foe')
.bothV())
.times(1)
.path().by().by(label)
输出:
path[v[u0], freind, v[u1]]
path[v[u0], buddy, v[u2]]
path[v[u0], foe, v[u3]]
我有一个用户,我从 (u0) 开始,希望所有用户都是他的朋友、伙伴等,但不是他的敌人。
不幸的是,它没有像预期的那样过滤... 知道我做错了什么吗?
hasNot()
步骤将仅过滤掉具有指定名称的 属性 的元素,在本例中为名为 foe
的 属性。相反,您应该考虑使用 not()
和 hasLabel()
来查找没有特定标签的项目,如下所示:
g.withSack(1.0f).V('u0')
.repeat(
bothE().not(hasLabel('foe'))
.bothV())
.times(1)
.path().by().by(label)