Graph gremlin查找所有连接的顶点

Graph gremlin查找所有连接的顶点,graph,gremlin,Graph,Gremlin,我有一个图,其中a->b,b->c,c->d等等。每个顶点都有一个createdOn属性。我想从a开始,获取createdOn属性小于特定日期(例如2017年5月31日)的所有顶点。我尝试过使用repeat和until,但没有得到预期的结果g.V('a')。重复(outE().inV())。直到(has('changedOn',gt('2017年5月31日12:00:00 AM'))我对这一点不熟悉,因此任何指导都是值得赞赏的。当询问有关Gremlin的问题时,最好提供一个示例图作为可以粘贴到G

我有一个图,其中a->b,b->c,c->d等等。每个顶点都有一个createdOn属性。我想从a开始,获取createdOn属性小于特定日期(例如2017年5月31日)的所有顶点。我尝试过使用repeat和until,但没有得到预期的结果
g.V('a')。重复(outE().inV())。直到(has('changedOn',gt('2017年5月31日12:00:00 AM'))
我对这一点不熟悉,因此任何指导都是值得赞赏的。

当询问有关Gremlin的问题时,最好提供一个示例图作为可以粘贴到Gremlin控制台中的Gremlin脚本,如下所示:

g.addV('person').property('name','a').property('changedOn', '2018-01-15T11:53:00').as('a').
  addV('person').property('name','b').property('changedOn', '2018-01-15T12:53:00').as('b').
  addV('person').property('name','c').property('changedOn', '2018-01-15T13:53:00').as('c').
  addV('person').property('name','d').property('changedOn', '2018-01-15T14:53:00').as('d').
  addV('person').property('name','e').property('changedOn', '2018-01-15T13:53:00').as('e').
  addE('link').from('a').to('b').
  addE('link').from('b').to('c').
  addE('link').from('c').to('d').
  addE('link').from('d').to('e').iterate()
给定该图,您可以使用
emit()
解决您的问题,这向
repeat()
解释了应该继续执行该步骤的遍历器:

gremlin> g.V().has('person','name','a').
......1>   emit(has('changedOn',lt('2018-01-15T14:53:00'))).
......2>   repeat(out('link')).
......3>   valueMap()
==>[name:[a],changedOn:[2018-01-15T11:53:00]]
==>[name:[b],changedOn:[2018-01-15T12:53:00]]
==>[name:[c],changedOn:[2018-01-15T13:53:00]]
==>[name:[e],changedOn:[2018-01-15T13:53:00]]
有几点需要注意:

  • 在这种情况下,
    emit()
  • 您尝试使用
    until()
    ,但这只是控制循环停止的时间。在我的示例中,它一直运行到链中不再有顶点为止-根据您的情况,您可能还需要执行
    until()
    步骤
  • 我不知道您在图形中存储的是什么形式的日期,但我使用了ISO-8601格式-您可能希望执行相同的操作,或者只是将日期存储为一个较长的值。无论是“小于”还是“大于”,两者都是可比的,并且可以移植到我所知道的所有图形数据库中