[英]gremlin find all connected vertices
我有一個圖,其中a-> b,b-> c,c-> d等。 每個頂點都有一個createdOn屬性。 我想從a開始並獲取其createdOn屬性小於特定日期(例如5/31/2017)的所有頂點。 我嘗試使用重復,直到但沒有得到我期望的結果。 gV('a').repeat(outE().inV()).until(has('changedOn',gt('5/31/2017 12:00:00 AM')))
我對此gV('a').repeat(outE().inV()).until(has('changedOn',gt('5/31/2017 12:00:00 AM')))
因此,任何指導表示贊賞。
當詢問有關Gremlin的問題時,總是最好提供一個示例圖作為Gremlin腳本,可以將其粘貼到Gremlin Console中,如下所示:
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()
的位置發生在repeat()
之前,因為您要發出“ a”頂點-如果它位於repeat()
,則不會獲得該頂點。 until()
但這只是控制循環何時停止。 在我的示例中,它一直運行到鏈中沒有更多頂點為止-根據您的情況,您可能還需要執行until()
步驟。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.