이것은 신인 Gremlin 질문 일 수 있습니다.
이 그래프가 있다고합시다
A [알다 --->] B
A [알다 --->] C
D [알다 --->] C
이 그래프를 가로 질러 A 만 알고있는 노드를 찾고 싶습니다.이 경우 A와 D가 모두 C를 알고 있기 때문에 C가 아닌 B 만 알고 있습니다. Gremlin으로이 작업을 수행 할 수있는 방법이 있습니까?
편집 : 미안합니다 처음에 질문에 더 명시 적이어야했습니다 들어오는 가장자리의 수는 실제로 가변적 일 수 있습니다.
g.addV('A').as('a')
.addV('B').as('b')
.addV('C').as('c')
.addV('D').as('d')
.addV('E').as('e')
.addV('F')as('f')
.addE('knows').from('a').to('c')
.addE('knows').from('b').to('c')
.addE('knows').from('a').to('f')
.addE('knows').from('b').to('f')
.addE('knows').from('d').to('f')
이 경우 A와 B는 C와 F를 모두 알고 있지만 D도 F를 알고 있기 때문에 F가 아닌 C 만 원하므로 F를 원하지 않습니다.
작은 샘플 그래프가 있으면 도움이됩니다. 귀하의 질문과 일치하는 항목이 있습니다.
g.addV('A').as('a').
addV('B').as('b').
addV('C').as('c').
addV('D').as('d').
addE('knows').from('a').to('b').
addE('knows').from('a').to('c').
addE('knows').from('d').to('c')
이 그래프를 사용하여 A에게 고유 한 친구를 찾는 쿼리를 다음과 같이 작성할 수 있습니다.
gremlin> g.V().hasLabel('A').
out('knows').
filter(__.in('knows').count().is(1)).
path().
by(label)
==>[A,B]
업데이트 된 질문에 따라 수정되었습니다.
좋습니다. 추가 기준을 고려할 때 필요한 정보를 제공한다고 생각합니다.
gremlin> g.V().hasLabel('A','B').
......1> out().
......2> groupCount().
......3> unfold().
......4> filter(select(values).is(2)).
......5> select(keys).
......6> where(__.in('knows').count().is(2)).
......7> label()
==>C
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다