簡體   English   中英

Gremlin 刪除多個頂點

[英]Gremlin Drop Multiple Vertices

我正在嘗試刪除給定 Gremlin 查詢返回的所有頂點。 目標是刪除作為特定頂點的子節點的所有子頂點。

這是一個例子:

gremlin> g.V('dcb26be6-8d39-ae81-6ef2-6f60d06bce10').emit().repeat(out())
==>v[dcb26be6-8d39-ae81-6ef2-6f60d06bce10]
==>v[16b26be6-8d37-e882-38c6-a56f39ee4259]
==>v[9cb26be6-8d3c-d61e-4ab4-6c6993e8be7a]
==>v[82b26be6-8d3a-c01a-3771-085c94d1780a]
==>v[00b26be6-8d3c-68d9-6871-702a1247a692]
==>v[d4b26be6-8d38-81ea-b75d-25bbf563f81e]
==>v[cab26be6-8d39-3611-76fa-f369eab9d50e]

此查詢返回所有具有連接到父dcb26be6-8d39-ae81-6ef2-6f60d06bce10頂點的外向邊的頂點。 有沒有一種簡單的方法可以刪除此查詢返回的所有頂點?

謝謝

編輯:

@stephan 反應很好,但是如果孩子們有指向彼此的邊緣,gremlin 會生我的氣。 看一下這個:

gremlin>  g.V('2ab26c9e-1bbb-73f6-4ee8-6cecc7e21ee1').emit().repeat(out()).fold().unfold()
==>v[2ab26c9e-1bbb-73f6-4ee8-6cecc7e21ee1]
==>v[0eb26c9e-1bbc-12f3-e074-d7328ee4984e]
**==>v[92b26c9e-1bbd-b59f-0b5f-d4c985b176b6]**
==>v[18b26c9e-1bbf-a96c-90d3-e50e61fe7267]
==>v[12b26c9e-1bc1-40ee-292d-2bc7b08dcb9e]
==>v[ccb26c9e-1bbc-a82a-532f-7fbdea87deb1]
==>v[42b26c9e-1bbd-5f1f-f3ad-6f6670ab16ee]
==>v[7ab26c9e-1bc1-e773-6995-18159d610b77]
==>v[3ab26c9e-1bbe-add8-2ab2-948d7c9c0021]
**==>v[2eb26c9e-1bbf-1657-e212-98d1dfff33cd]**
**==>v[92b26c9e-1bbd-b59f-0b5f-d4c985b176b6]**
==>v[8cb26c9e-1bc2-500b-ae27-370a0cc4d392]
==>v[42b26c9e-1bc0-b4b0-4d54-fc7f20ca71d4]
==>v[7ab26c9e-1bc1-e773-6995-18159d610b77]
==>v[3ab26c9e-1bbe-add8-2ab2-948d7c9c0021]
**==>v[2eb26c9e-1bbf-1657-e212-98d1dfff33cd]**

如您所見,頂點 92b26c9e-1bbd-b59f-0b5f-d4c985b176b6 作為對該查詢的響應出現了兩次。 因此,當我嘗試執行gV('2ab26c9e-1bbb-73f6-4ee8-6cecc7e21ee1'). emit(). repeat(out()). fold(). unfold() gV('2ab26c9e-1bbb-73f6-4ee8-6cecc7e21ee1'). emit(). repeat(out()). fold(). unfold()

這是我得到的回應

gremlin>  g.V('2ab26c9e-1bbb-73f6-4ee8-6cecc7e21ee1'). emit(). repeat(out()). fold(). unfold().drop()
{"requestId":"2def0086-d71f-42e4-9c5f-c692d07cc96a","detailedMessage":"The 
vertex does not exist 92b26c9e-1bbd-b59f-0b5f- 
d4c985b176b6","code":"ConstraintViolationException"}

有沒有辦法從初始查詢中刪除重復項?

也許這只是一天的結束,我的大腦被炸了,但是如何:

g.V('dcb26be6-8d39-ae81-6ef2-6f60d06bce10').
  store('a').
  repeat(out().store('a')).
  cap('a').
  unfold().
  drop()

或不太可讀的imo:

g.V('dcb26be6-8d39-ae81-6ef2-6f60d06bce10').
  emit().
  repeat(out()).
  fold().
  unfold().
  drop()

您可能會得到一個更好的答案-甚至可以從我這里得到:)

您需要一個屏障步驟,折疊上限都是 - 但是都會產生副作用(它們會消耗內存/處理能力)。 障礙步驟似乎更適合這個:

g.V('dcb26be6-8d39-ae81-6ef2-6f60d06bce10')
  .emit()
  .repeat(out())
  .barrier()
  .drop()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM