GraphGists

Neo4j 简介

让我们创建我们的第一个基本图!我们将创建一个类似于您在视频中看到的(或类似于您在这张图片中看到的)内容。

3JiWZht

当然,如果您不是巴塞罗那的支持者,您可以随意更改它。

CREATE  (m:Player{name:"Lionel Messi"}),	   	    (b:Team{name:"Barcelona"})
WITH m, b
CREATE (m)-[p:PlaysFor]->(b)
SET p.since=2001
//SET p.since=date("2001-02-01") // For some reason the GraphGists don't support dates
RETURN m, p, b

朋友网络

但是上一个例子相当简单,不如我们创建一个朋友网络来看看还能做些什么…​

// Create nodes
CREATE (rob:Person{name:'Roberto'}), (isidro:Person{name:'Isidro'}),
      (tony:Person{name:'Antonio'}), (nora:Person{name:'Nora'}),
      (lily:Person{name:'Lilian'}), (freddy:Person{name:'Alfredo'}),
      (lucas:Person{name:'Lucas'}), (mau:Person{name:'Mauricio'}),
      (alb:Person{name:'Albina'}), (reg:Person{name:'Regina'}),
      (j:Person{name:'Joaquín'}), (julian:Person{name:'Julián'})
// Create relationships
CREATE
  (rob)-[:FriendsWith]->(isidro), (rob)-[:FriendsWith]->(tony), (rob)-[:FriendsWith]->(reg),
  (rob)-[:FriendsWith]->(mau), (rob)-[:FriendsWith]->(julian),
  (tony)-[:FriendsWith]->(reg), (tony)-[:FriendsWith]->(j),
  (alb)-[:FriendsWith]->(reg), (lily)-[:FriendsWith]->(isidro), (lily)-[:FriendsWith]->(j),
  (mau)-[:FriendsWith]->(lucas), (lucas)-[:FriendsWith]->(nora), (freddy)-[:FriendsWith]->(nora);

// Query the relationships
MATCH friendships=()-[:FriendsWith]-()
RETURN friendships

🤔

让我们找出与 Lucas 是朋友的人(请注意,我们不关心关系的方向,我们在关系中没有使用箭头

MATCH friends=(a:Person{name:'Lucas'})-[:FriendsWith]-(friend)
RETURN friends

Lucas 的朋友的朋友的朋友呢?想象一下在 SQL 中做这样的事情…​

MATCH friends=(a:Person{name:'Lucas'})-[:FriendsWith*3]-(friend)
RETURN friend.name

或者更高级一点,Joaquín 和 Lucas 之间的最短路径是哪条

MATCH (lucas:Person{name:'Lucas'}), (joaquin:Person{name:'Joaquín'}),
  p = shortestPath((lucas)-[*]-(joaquin))
RETURN p

现在轮到你了,尽情玩转上面的图或创建你自己的图

创建者:Antonio Feregrino - Twitter | YouTube | LinkedIn