Запрос Gremlin для поиска дубликатов и обновления свойства вершины

#python #gremlin #amazon-neptune #gremlin-server #gremlinpython

#python #gremlin #amazon-нептун #gremlin-сервер #gremlinpython

Вопрос:

Я хочу найти повторяющиеся записи и обновить свойство isDuplicate до yes .

Я могу найти повторяющиеся записи, но не смог найти способ обновить свойство.

  g.V() 
.has("customerId") 
.group().by("customerId") 
.unfold() 
.toList()
 

Приведенный выше запрос также возвращает отдельные записи. Я также хочу их удалить.

Ответ №1:

Вот один из способов сделать это:

 gremlin> g = TinkerGraph.open().traversal()
==>graphtraversalsource[tinkergraph[vertices:0 edges:0], standard]
gremlin> g.addV('person').property('customerId','alice').
......1>   addV('person').property('customerId','alice').
......2>   addV('person').property('customerId','bob').
......3>   addV('person').property('customerId','alice').iterate()
gremlin> g.V().hasLabel('person').has('customerId').
......1>   group().by('customerId').
......2>   unfold().
......3>   select(values).filter(count(local).is(gt(1))).unfold().
......4>   property('isDuplicate','yes')
==>v[0]
==>v[2]
==>v[6]
gremlin> g.V().elementMap()
==>[id:0,label:person,customerId:alice,isDuplicate:yes]
==>[id:2,label:person,customerId:alice,isDuplicate:yes]
==>[id:4,label:person,customerId:bob]
==>[id:6,label:person,customerId:alice,isDuplicate:yes]