방금 http://www.neo4j.org/learn/online_course에서 교육을 마쳤으며 실험실 답변에 대한 몇 가지 질문을 받았습니다. 키아누 리브스와 함께 작동합니다 세 배우 추천 :Training의 Neo4j cypher 쿼리
첫 번째 레슨 2 (아무 대답이 주어지지되고는 그래프 위젯 거시기에 확인하지 않습니다)
문제가되고있는 고급 그래프 연구소에서입니다 (그러나하지 않았다). 힌트는 기본적으로 Keanu가 ACTED_IN하지 않은 ACTED_IN 관계가있는 세 명의 인물을 선택해야한다는 것입니다.
그래프에는 ACTED_IN 관계 및 DIRECTED 관계가있는 개인 노드와 영화 노드가 있습니다.
내가이 함께했다 :
MATCH (a:Person)-[:ACTED_IN]->(movie:Movie)
WHERE NOT (:Person {name:"Keanu Reeves"})-[:ACTED_IN]->(movie)
RETURN a, count(movie)
ORDER BY count(movie) DESC
LIMIT 3
하지만 실제로 같은 영화를 제외하거나 경우 내가 말할 수 없었다 단지 키아누 리브스 (때문에 키아누의 영화에 없었던 반환 된 배우,하지만 그들은 너무 많은 중복하지 난 그래도 그것을 좋아하지 않아가 있기 때문에 내가
MATCH (keanu:Person)-[:ACTED_IN]->(movie),
(playedwith:Person)-[:ACTED_IN]->(movie),
(playedwith)-[t:ACTED_IN]->(othermovie),
(other:Person)-[:ACTED_IN]->(othermovie)
WHERE keanu.name = "Keanu Reeves"
AND NOT (other)-[:ACTED_IN]->(movie)
AND NOT (keanu)-[:ACTED_IN]->(othermovie)
RETURN other.name
,collect(DISTINCT othermovie)
,collect(DISTINCT playedwith)
,count(DISTINCT playedwith)
ORDER BY count(DISTINCT playedwith)desc
LIMIT 3
무엇을했는지 여기
그것들은 내가 그들을 읽었을 때 아주 의미가 있습니다. 내 솔루션과 비슷한 결과지만 훨씬 간단한 구문. – Snowburnt
구문은 내가 생각한 것보다 훨씬 깔끔합니다 (NOT IN 문을 사용하는 파이프 라이닝 된 쿼리). Keanu와 가장 많이 활동하는 배우 (친구)와 함께 작업하지 않은 배우를 보여 주면서 처음 스타일을 수정하여 쿼리 스타일에 맞춰 훨씬 더 좋아졌습니다. – Snowburnt