Janusgraph-如何隐藏两个顶点之间的边关系并根据条件再次建立/检索?

时间:2019-06-25 12:03:29

标签: gremlin janusgraph

我是Janusgraph数据库的新手。我有一个需求,我需要隐藏两个顶点之间的关系(边)而不将其放下,以后我应该能够根据条件再次在这些顶点之间检索/建立相同的关系。

我只知道如何删除边缘,但不知道如何再次检索/恢复关系。你能在这里帮我吗?

非常感谢您的时间。

1 个答案:

答案 0 :(得分:3)

如果您想“恢复”连接,我认为您根本不应该删除它们。

仅在边缘上保留一个指示边缘状态(活动/不活动)的属性,或者在边缘上保留开始和结束日期。 这样,在遍历图形时,您需要确保仅使用活动边,但是如果要还原它们,仍然可以轻松找到旧边。

例如:

g.addV('person').property('id', 'bob').property('name', 'Bob')
g.addV('person').property('id', 'alice').property('name', 'Alice')
g.addV('person').property('id', 'eve').property('name', 'Eve')
g.V('bob').addE('friend').to(g.V('alice'))
g.V('bob').addE('friend').to(g.V('eve'))

鲍勃与爱丽丝和夏娃的朋友:

g.V('bob').out('friend').values("name")
==>Alice
==>Eve

让我们说鲍勃和爱丽丝有一个后果,他们不再是朋友:

g.V('bob').outE('friend').where(inV().hasId('alice')).property('status', 'inactive')

现在,您只能查询Bob的活跃朋友,而不会失去原有的优势:

g.V('bob').outE('friend').not(has('status', 'inactive')).inV().values("name")
==> Eve