Gremlin删除多个顶点 [英] Gremlin Drop Multiple Vertices

查看:72
本文介绍了Gremlin删除多个顶点的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图删除给定Gremlin查询返回的所有顶点.目的是删除所有属于特定顶点的子顶点.

I am trying to drop all vertices returned by a given Gremlin query. The goal is to delete all children vertices which are children of a specific vertex.

这是一个例子:

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 顶点连接的顶点.有没有简单的方法来删除此查询返回的所有顶点?

This query returns all vertices that have outward facing edges connected to the parent dcb26be6-8d39-ae81-6ef2-6f60d06bce10 vertex. Is there an easy way to drop all of the vertices returned by this query?

谢谢

@stephan做出了很好的回应,但是如果孩子们互相指责,格雷姆林就会生我的气.检查一下:

@stephan had a great response however if the children have edges pointing to eachother gremlin gets mad at me. Check this out:

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对此查询的响应出现了两次.因此,当我尝试执行 g.V('2ab26c9e-1bbb-73f6-4ee8-6cecc7e21ee1')时.发射().repeat(out()).折叠().unfold()

As you can see vertex 92b26c9e-1bbd-b59f-0b5f-d4c985b176b6 appears twice as a response to this query. So when I try to do g.V('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"}

有什么方法可以从初始查询中删除重复项?

Is there any way to remove duplicates from the initial query?

推荐答案

也许只是一天结束了,我的大脑被炸了,但是怎么回事:

Maybe it's just the end of the day and my brain is fried, but how about:

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

或者可能是不太易读的imo:

or perhaps slightly less readable imo:

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

您可能会得到更好的答案-甚至从我这里:)

You may get a nicer answer - maybe even from me :)

这篇关于Gremlin删除多个顶点的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆