ubuntu 部署社区版neo4j图数据库
Neo4j是一个原生图数据库,它存储和处理数据的方式与你刚在浏览器中画的关系图几乎一样:用节点(如“基努·里维斯”)、关系(如“出演”)和属性(如“角色:尼奥”)来构建数据模型。这种结构让它特别擅长快速分析和查询数据之间的复杂联系。
为什么Neo4j这么快?
它的优势在处理关联数据时尤为明显。与传统关系型数据库(如MySQL)需要使用复杂的“连接”操作来查询关系不同,Neo4j在存储数据时,就直接把“关系”作为一等公民保存了下来。这使得查询如“朋友的朋友”这种多层关系时,速度能比传统数据库快上千倍。
一、安装步骤
sudo apt-get update
sudo apt install neo4j-enterprise=1:5.26.14
sudo systemctl start neo4j
sudo systemctl enable neo4j
sudo systemctl status neo4j
ss -ltnp|grep 7474
vim /etc/neo4j/neo4j.conf
#开放远程连接
server.default_listen_address=0.0.0.0
server.bolt.listen_address=:7687
server.http.listen_address=:7474
#重启生效
sudo systemctl restart neo4j
sudo systemctl status neo4j
二、UI界面登陆
http://192.168.119.100:7474
初始登陆要更改密码
先输入默认密码 neo4j
再更改新密码 xxxxxxx
三、导入测试数据
第 1 块:创建电影节点
CREATE (matrix1:Movie {
title: '黑客帝国',
title_en: 'The Matrix',
year: 1999,
runtime: 136,
rating: 8.7,
box_office: 467000000,
description: '一名程序员发现现实世界其实是由邪恶人工智能控制的虚拟世界'
});
CREATE (matrix2:Movie {
title: '黑客帝国2:重装上阵',
title_en: 'The Matrix Reloaded',
year: 2003,
runtime: 138,
rating: 7.2,
box_office: 742000000,
description: '尼奥发现锡安面临机器大军的威胁,需要寻找关键人物'
});
CREATE (matrix3:Movie {
title: '黑客帝国3:矩阵革命',
title_en: 'The Matrix Revolutions',
year: 2003,
runtime: 129,
rating: 6.7,
box_office: 427000000,
description: '尼奥与史密斯特工展开最终对决,人类与机器的战争进入尾声'
});
CREATE (matrix4:Movie {
title: '黑客帝国4:矩阵重启',
title_en: 'The Matrix Resurrections',
year: 2021,
runtime: 148,
rating: 5.7,
box_office: 157000000,
description: '尼奥和崔妮蒂被困在模拟现实中,需要重新觉醒'
});
CREATE (animatrix:Movie {
title: '黑客帝国动画版',
title_en: 'The Animatrix',
year: 2003,
runtime: 100,
rating: 7.5,
box_office: 0,
description: '九部动画短片组成的黑客帝国前传和支线故事'
});
第 2 块:创建演员节点
CREATE (keanu:Person {name: '基努·里维斯', name_en: 'Keanu Reeves', born: 1964, country: '加拿大', gender: '男'});
CREATE (carrie:Person {name: '凯瑞-安·莫斯', name_en: 'Carrie-Anne Moss', born: 1967, country: '加拿大', gender: '女'});
CREATE (laurence:Person {name: '劳伦斯·菲什伯恩', name_en: 'Laurence Fishburne', born: 1961, country: '美国', gender: '男'});
CREATE (hugo:Person {name: '雨果·维文', name_en: 'Hugo Weaving', born: 1960, country: '澳大利亚', gender: '男'});
CREATE (jada:Person {name: '贾达·萍克特·史密斯', name_en: 'Jada Pinkett Smith', born: 1971, country: '美国', gender: '女'});
CREATE (gloria:Person {name: '格洛丽亚·福斯特', name_en: 'Gloria Foster', born: 1933, country: '美国', gender: '女'});
CREATE (joe:Person {name: '乔·潘托里亚诺', name_en: 'Joe Pantoliano', born: 1951, country: '美国', gender: '男'});
CREATE (marcus:Person {name: '马库斯·钟', name_en: 'Marcus Chong', born: 1967, country: '美国', gender: '男'});
CREATE (anthony:Person {name: '安东尼·雷·帕克', name_en: 'Anthony Ray Parker', born: 1958, country: '美国', gender: '男'});
CREATE (monica:Person {name: '莫妮卡·贝鲁奇', name_en: 'Monica Bellucci', born: 1964, country: '意大利', gender: '女'});
CREATE (lambert:Person {name: '兰伯特·威尔逊', name_en: 'Lambert Wilson', born: 1958, country: '法国', gender: '男'});
CREATE (nona:Person {name: '诺娜·加耶', name_en: 'Nona Gaye', born: 1974, country: '美国', gender: '女'});
CREATE (jessica:Person {name: '杰西卡·亨维克', name_en: 'Jessica Henwick', born: 1992, country: '英国', gender: '女'});
CREATE (neil:Person {name: '尼尔·帕特里克·哈里斯', name_en: 'Neil Patrick Harris', born: 1973, country: '美国', gender: '男'});
第 3 块:创建导演、角色、类型、制作公司、奖项节点
CREATE (wachowski:Person {name: '沃卓斯基姐妹', name_en: 'The Wachowskis', born: 1965, country: '美国', gender: '女', note: '拉娜·沃卓斯基 & 莉莉·沃卓斯基'});
CREATE (role_neo:Role {name: '尼奥', name_en: 'Neo', alias: '托马斯·安德森'});
CREATE (role_trinity:Role {name: '崔妮蒂', name_en: 'Trinity'});
CREATE (role_morpheus:Role {name: '墨菲斯', name_en: 'Morpheus'});
CREATE (role_smith:Role {name: '史密斯特工', name_en: 'Agent Smith'});
CREATE (role_niobe:Role {name: '奈奥比', name_en: 'Niobe'});
CREATE (role_oracle:Role {name: '先知', name_en: 'The Oracle'});
CREATE (role_cypher:Role {name: '塞弗', name_en: 'Cypher'});
CREATE (role_tank:Role {name: '坦克', name_en: 'Tank'});
CREATE (role_dozer:Role {name: '道泽', name_en: 'Dozer'});
CREATE (role_persephone:Role {name: '珀耳塞福涅', name_en: 'Persephone'});
CREATE (role_merovingian:Role {name: '梅罗文加', name_en: 'The Merovingian'});
CREATE (role_zee:Role {name: '齐', name_en: 'Zee'});
CREATE (role_bugs:Role {name: '巴格斯', name_en: 'Bugs'});
CREATE (role_analyst:Role {name: '分析师', name_en: 'The Analyst'});
CREATE (genre_sci:Genre {name: '科幻'});
CREATE (genre_action:Genre {name: '动作'});
CREATE (genre_cyber:Genre {name: '赛博朋克'});
CREATE (genre_philosophy:Genre {name: '哲学'});
CREATE (genre_adventure:Genre {name: '冒险'});
CREATE (studio_wb:Studio {name: '华纳兄弟', name_en: 'Warner Bros.', country: '美国'});
CREATE (studio_village:Studio {name: '威秀电影', name_en: 'Village Roadshow', country: '澳大利亚'});
CREATE (studio_silver:Studio {name: '银影制作', name_en: 'Silver Pictures', country: '美国'});
CREATE (award_oscar_vis: Award {name: '奥斯卡最佳视觉效果', year: 2000, category: '奥斯卡'});
CREATE (award_oscar_edit: Award {name: '奥斯卡最佳电影剪辑', year: 2000, category: '奥斯卡'});
CREATE (award_sound: Award {name: '奥斯卡最佳音效', year: 2000, category: '奥斯卡'});
CREATE (award_saturn: Award {name: '土星奖最佳科幻电影', year: 2000, category: '土星奖'});
CREATE (award_bAFTA: Award {name: 'BAFTA最佳视觉效果', year: 2000, category: 'BAFTA'});
第 4 块:创建角色-演员映射关系 (PLAYED)
MATCH (keanu:Person {name: '基努·里维斯'}), (role:Role {name: '尼奥'})
CREATE (keanu)-[:PLAYED {movie: '黑客帝国'}]->(role);
MATCH (carrie:Person {name: '凯瑞-安·莫斯'}), (role:Role {name: '崔妮蒂'})
CREATE (carrie)-[:PLAYED {movie: '黑客帝国'}]->(role);
MATCH (laurence:Person {name: '劳伦斯·菲什伯恩'}), (role:Role {name: '墨菲斯'})
CREATE (laurence)-[:PLAYED {movie: '黑客帝国'}]->(role);
MATCH (hugo:Person {name: '雨果·维文'}), (role:Role {name: '史密斯特工'})
CREATE (hugo)-[:PLAYED {movie: '黑客帝国'}]->(role);
MATCH (gloria:Person {name: '格洛丽亚·福斯特'}), (role:Role {name: '先知'})
CREATE (gloria)-[:PLAYED {movie: '黑客帝国'}]->(role);
MATCH (joe:Person {name: '乔·潘托里亚诺'}), (role:Role {name: '塞弗'})
CREATE (joe)-[:PLAYED {movie: '黑客帝国'}]->(role);
第 5 块:创建导演关系
MATCH (wachowski:Person {name: '沃卓斯基姐妹'}), (matrix1:Movie {title: '黑客帝国'})
CREATE (wachowski)-[:DIRECTED {year: 1999}]->(matrix1);
MATCH (wachowski:Person {name: '沃卓斯基姐妹'}), (matrix2:Movie {title: '黑客帝国2:重装上阵'})
CREATE (wachowski)-[:DIRECTED {year: 2003}]->(matrix2);
MATCH (wachowski:Person {name: '沃卓斯基姐妹'}), (matrix3:Movie {title: '黑客帝国3:矩阵革命'})
CREATE (wachowski)-[:DIRECTED {year: 2003}]->(matrix3);
MATCH (wachowski:Person {name: '沃卓斯基姐妹'}), (matrix4:Movie {title: '黑客帝国4:矩阵重启'})
CREATE (wachowski)-[:DIRECTED {year: 2021}]->(matrix4);
第 6 块:创建演员出演电影关系
MATCH (keanu:Person {name: '基努·里维斯'}), (matrix1:Movie {title: '黑客帝国'})
CREATE (keanu)-[:ACTED_IN {role: '尼奥', year: 1999}]->(matrix1);
MATCH (keanu:Person {name: '基努·里维斯'}), (matrix2:Movie {title: '黑客帝国2:重装上阵'})
CREATE (keanu)-[:ACTED_IN {role: '尼奥', year: 2003}]->(matrix2);
MATCH (keanu:Person {name: '基努·里维斯'}), (matrix3:Movie {title: '黑客帝国3:矩阵革命'})
CREATE (keanu)-[:ACTED_IN {role: '尼奥', year: 2003}]->(matrix3);
MATCH (keanu:Person {name: '基努·里维斯'}), (matrix4:Movie {title: '黑客帝国4:矩阵重启'})
CREATE (keanu)-[:ACTED_IN {role: '尼奥', year: 2021}]->(matrix4);
MATCH (carrie:Person {name: '凯瑞-安·莫斯'}), (matrix1:Movie {title: '黑客帝国'})
CREATE (carrie)-[:ACTED_IN {role: '崔妮蒂', year: 1999}]->(matrix1);
MATCH (carrie:Person {name: '凯瑞-安·莫斯'}), (matrix2:Movie {title: '黑客帝国2:重装上阵'})
CREATE (carrie)-[:ACTED_IN {role: '崔妮蒂', year: 2003}]->(matrix2);
MATCH (carrie:Person {name: '凯瑞-安·莫斯'}), (matrix3:Movie {title: '黑客帝国3:矩阵革命'})
CREATE (carrie)-[:ACTED_IN {role: '崔妮蒂', year: 2003}]->(matrix3);
MATCH (carrie:Person {name: '凯瑞-安·莫斯'}), (matrix4:Movie {title: '黑客帝国4:矩阵重启'})
CREATE (carrie)-[:ACTED_IN {role: '崔妮蒂', year: 2021}]->(matrix4);
MATCH (laurence:Person {name: '劳伦斯·菲什伯恩'}), (matrix1:Movie {title: '黑客帝国'})
CREATE (laurence)-[:ACTED_IN {role: '墨菲斯', year: 1999}]->(matrix1);
MATCH (laurence:Person {name: '劳伦斯·菲什伯恩'}), (matrix2:Movie {title: '黑客帝国2:重装上阵'})
CREATE (laurence)-[:ACTED_IN {role: '墨菲斯', year: 2003}]->(matrix2);
MATCH (laurence:Person {name: '劳伦斯·菲什伯恩'}), (matrix3:Movie {title: '黑客帝国3:矩阵革命'})
CREATE (laurence)-[:ACTED_IN {role: '墨菲斯', year: 2003}]->(matrix3);
MATCH (hugo:Person {name: '雨果·维文'}), (matrix1:Movie {title: '黑客帝国'})
CREATE (hugo)-[:ACTED_IN {role: '史密斯特工', year: 1999}]->(matrix1);
MATCH (hugo:Person {name: '雨果·维文'}), (matrix2:Movie {name: '黑客帝国2:重装上阵'})
CREATE (hugo)-[:ACTED_IN {role: '史密斯特工', year: 2003}]->(matrix2);
MATCH (hugo:Person {name: '雨果·维文'}), (matrix3:Movie {title: '黑客帝国3:矩阵革命'})
CREATE (hugo)-[:ACTED_IN {role: '史密斯特工', year: 2003}]->(matrix3);
MATCH (jada:Person {name: '贾达·萍克特·史密斯'}), (matrix2:Movie {title: '黑客帝国2:重装上阵'})
CREATE (jada)-[:ACTED_IN {role: '奈奥比', year: 2003}]->(matrix2);
MATCH (jada:Person {name: '贾达·萍克特·史密斯'}), (matrix3:Movie {title: '黑客帝国3:矩阵革命'})
CREATE (jada)-[:ACTED_IN {role: '奈奥比', year: 2003}]->(matrix3);
MATCH (monica:Person {name: '莫妮卡·贝鲁奇'}), (matrix2:Movie {title: '黑客帝国2:重装上阵'})
CREATE (monica)-[:ACTED_IN {role: '珀耳塞福涅', year: 2003}]->(matrix2);
MATCH (monica:Person {name: '莫妮卡·贝鲁奇'}), (matrix3:Movie {title: '黑客帝国3:矩阵革命'})
CREATE (monica)-[:ACTED_IN {role: '珀耳塞福涅', year: 2003}]->(matrix3);
MATCH (lambert:Person {name: '兰伯特·威尔逊'}), (matrix2:Movie {title: '黑客帝国2:重装上阵'})
CREATE (lambert)-[:ACTED_IN {role: '梅罗文加', year: 2003}]->(matrix2);
MATCH (jessica:Person {name: '杰西卡·亨维克'}), (matrix4:Movie {title: '黑客帝国4:矩阵重启'})
CREATE (jessica)-[:ACTED_IN {role: '巴格斯', year: 2021}]->(matrix4);
MATCH (neil:Person {name: '尼尔·帕特里克·哈里斯'}), (matrix4:Movie {title: '黑客帝国4:矩阵重启'})
CREATE (neil)-[:ACTED_IN {role: '分析师', year: 2021}]->(matrix4);
第 7 块:创建电影类型关系
MATCH (matrix1:Movie {title: '黑客帝国'}), (genre:Genre {name: '科幻'})
CREATE (matrix1)-[:HAS_GENRE]->(genre);
MATCH (matrix1:Movie {title: '黑客帝国'}), (genre:Genre {name: '动作'})
CREATE (matrix1)-[:HAS_GENRE]->(genre);
MATCH (matrix1:Movie {title: '黑客帝国'}), (genre:Genre {name: '赛博朋克'})
CREATE (matrix1)-[:HAS_GENRE]->(genre);
MATCH (matrix1:Movie {title: '黑客帝国'}), (genre:Genre {name: '哲学'})
CREATE (matrix1)-[:HAS_GENRE]->(genre);
MATCH (matrix2:Movie {title: '黑客帝国2:重装上阵'}), (genre:Genre {name: '科幻'})
CREATE (matrix2)-[:HAS_GENRE]->(genre);
MATCH (matrix2:Movie {title: '黑客帝国2:重装上阵'}), (genre:Genre {name: '动作'})
CREATE (matrix2)-[:HAS_GENRE]->(genre);
MATCH (matrix2:Movie {title: '黑客帝国2:重装上阵'}), (genre:Genre {name: '冒险'})
CREATE (matrix2)-[:HAS_GENRE]->(genre);
MATCH (matrix3:Movie {title: '黑客帝国3:矩阵革命'}), (genre:Genre {name: '科幻'})
CREATE (matrix3)-[:HAS_GENRE]->(genre);
MATCH (matrix3:Movie {title: '黑客帝国3:矩阵革命'}), (genre:Genre {name: '动作'})
CREATE (matrix3)-[:HAS_GENRE]->(genre);
MATCH (matrix4:Movie {title: '黑客帝国4:矩阵重启'}), (genre:Genre {name: '科幻'})
CREATE (matrix4)-[:HAS_GENRE]->(genre);
MATCH (matrix4:Movie {title: '黑客帝国4:矩阵重启'}), (genre:Genre {name: '动作'})
CREATE (matrix4)-[:HAS_GENRE]->(genre);
MATCH (animatrix:Movie {title: '黑客帝国动画版'}), (genre:Genre {name: '科幻'})
CREATE (animatrix)-[:HAS_GENRE]->(genre);
MATCH (animatrix:Movie {title: '黑客帝国动画版'}), (genre:Genre {name: '赛博朋克'})
CREATE (animatrix)-[:HAS_GENRE]->(genre);
第 8 块:创建制作公司关系
MATCH (matrix1:Movie {title: '黑客帝国'}), (studio:Studio {name: '华纳兄弟'})
CREATE (studio)-[:PRODUCED {year: 1999}]->(matrix1);
MATCH (matrix1:Movie {title: '黑客帝国'}), (studio:Studio {name: '威秀电影'})
CREATE (studio)-[:PRODUCED {year: 1999}]->(matrix1);
MATCH (matrix2:Movie {title: '黑客帝国2:重装上阵'}), (studio:Studio {name: '华纳兄弟'})
CREATE (studio)-[:PRODUCED {year: 2003}]->(matrix2);
MATCH (matrix3:Movie {title: '黑客帝国3:矩阵革命'}), (studio:Studio {name: '华纳兄弟'})
CREATE (studio)-[:PRODUCED {year: 2003}]->(matrix3);
MATCH (matrix4:Movie {title: '黑客帝国4:矩阵重启'}), (studio:Studio {name: '华纳兄弟'})
CREATE (studio)-[:PRODUCED {year: 2021}]->(matrix4);
第 9 块:创建续集/前传关系
MATCH (matrix1:Movie {title: '黑客帝国'}), (matrix2:Movie {title: '黑客帝国2:重装上阵'})
CREATE (matrix1)-[:SEQUEL_OF {order: 1}]->(matrix2);
MATCH (matrix2:Movie {title: '黑客帝国2:重装上阵'}), (matrix3:Movie {title: '黑客帝国3:矩阵革命'})
CREATE (matrix2)-[:SEQUEL_OF {order: 2}]->(matrix3);
MATCH (matrix1:Movie {title: '黑客帝国'}), (animatrix:Movie {title: '黑客帝国动画版'})
CREATE (matrix1)-[:PREQUEL_OF]->(animatrix);
MATCH (matrix3:Movie {title: '黑客帝国3:矩阵革命'}), (matrix4:Movie {title: '黑客帝国4:矩阵重启'})
CREATE (matrix3)-[:SEQUEL_OF {order: 3}]->(matrix4);
第 10 块:创建角色关系
MATCH (neo:Role {name: '尼奥'}), (trinity:Role {name: '崔妮蒂'})
CREATE (neo)-[:LOVES]->(trinity);
MATCH (trinity:Role {name: '崔妮蒂'}), (neo:Role {name: '尼奥'})
CREATE (trinity)-[:LOVES]->(neo);
MATCH (neo:Role {name: '尼奥'}), (morpheus:Role {name: '墨菲斯'})
CREATE (neo)-[:TRUSTS]->(morpheus);
MATCH (morpheus:Role {name: '墨菲斯'}), (neo:Role {name: '尼奥'})
CREATE (morpheus)-[:BELIEVES_IN]->(neo);
MATCH (neo:Role {name: '尼奥'}), (smith:Role {name: '史密斯特工'})
CREATE (neo)-[:ENEMY_OF]->(smith);
MATCH (smith:Role {name: '史密斯特工'}), (neo:Role {name: '尼奥'})
CREATE (smith)-[:ENEMY_OF]->(neo);
MATCH (morpheus:Role {name: '墨菲斯'}), (oracle:Role {name: '先知'})
CREATE (morpheus)-[:SEEKS_GUIDANCE_FROM]->(oracle);
MATCH (cypher:Role {name: '塞弗'}), (smith:Role {name: '史密斯特工'})
CREATE (cypher)-[:BETRAYS_TO]->(smith);
第 11 块:创建奖项关系
MATCH (matrix1:Movie {title: '黑客帝国'}), (award:Award {name: '奥斯卡最佳视觉效果'})
CREATE (matrix1)-[:WON_AWARD {year: 2000}]->(award);
MATCH (matrix1:Movie {title: '黑客帝国'}), (award:Award {name: '奥斯卡最佳电影剪辑'})
CREATE (matrix1)-[:WON_AWARD {year: 2000}]->(award);
MATCH (matrix1:Movie {title: '黑客帝国'}), (award:Award {name: '奥斯卡最佳音效'})
CREATE (matrix1)-[:WON_AWARD {year: 2000}]->(award);
MATCH (matrix1:Movie {title: '黑客帝国'}), (award:Award {name: '土星奖最佳科幻电影'})
CREATE (matrix1)-[:WON_AWARD {year: 2000}]->(award);
MATCH (matrix1:Movie {title: '黑客帝国'}), (award:Award {name: 'BAFTA最佳视觉效果'})
CREATE (matrix1)-[:WON_AWARD {year: 2000}]->(award);
第 12 块:创建演员合作关系
MATCH (keanu:Person {name: '基努·里维斯'}), (carrie:Person {name: '凯瑞-安·莫斯'})
CREATE (keanu)-[:COLLABORATED {movies: ['黑客帝国', '黑客帝国2:重装上阵', '黑客帝国3:矩阵革命', '黑客帝国4:矩阵重启']}]->(carrie);
MATCH (keanu:Person {name: '基努·里维斯'}), (laurence:Person {name: '劳伦斯·菲什伯恩'})
CREATE (keanu)-[:COLLABORATED {movies: ['黑客帝国', '黑客帝国2:重装上阵', '黑客帝国3:矩阵革命']}]->(laurence);
MATCH (keanu:Person {name: '基努·里维斯'}), (hugo:Person {name: '雨果·维文'})
CREATE (keanu)-[:COLLABORATED {movies: ['黑客帝国', '黑客帝国2:重装上阵', '黑客帝国3:矩阵革命']}]->(hugo);
MATCH (carrie:Person {name: '凯瑞-安·莫斯'}), (laurence:Person {name: '劳伦斯·菲什伯恩'})
CREATE (carrie)-[:COLLABORATED {movies: ['黑客帝国', '黑客帝国2:重装上阵', '黑客帝国3:矩阵革命']}]->(laurence);
第 13 块:创建共同出演关系(CO_STARRED)
MATCH (matrix1:Movie {title: '黑客帝国'})
MATCH (p1:Person)-[:ACTED_IN]->(matrix1), (p2:Person)-[:ACTED_IN]->(matrix1)
WHERE p1 <> p2 AND id(p1) < id(p2)
CREATE (p1)-[:CO_STARRED {movie: '黑客帝国', year: 1999}]->(p2);
MATCH (matrix2:Movie {title: '黑客帝国2:重装上阵'})
MATCH (p1:Person)-[:ACTED_IN]->(matrix2), (p2:Person)-[:ACTED_IN]->(matrix2)
WHERE p1 <> p2 AND id(p1) < id(p2)
CREATE (p1)-[:CO_STARRED {movie: '黑客帝国2:重装上阵', year: 2003}]->(p2);
MATCH (matrix3:Movie {title: '黑客帝国3:矩阵革命'})
MATCH (p1:Person)-[:ACTED_IN]->(matrix3), (p2:Person)-[:ACTED_IN]->(matrix3)
WHERE p1 <> p2 AND id(p1) < id(p2)
CREATE (p1)-[:CO_STARRED {movie: '黑客帝国3:矩阵革命', year: 2003}]->(p2);
MATCH (matrix4:Movie {title: '黑客帝国4:矩阵重启'})
MATCH (p1:Person)-[:ACTED_IN]->(matrix4), (p2:Person)-[:ACTED_IN]->(matrix4)
WHERE p1 <> p2 AND id(p1) < id(p2)
CREATE (p1)-[:CO_STARRED {movie: '黑客帝国4:矩阵重启', year: 2021}]->(p2);
第 14 块:验证数据
RETURN "数据创建完成!" AS Result;
MATCH (n)
RETURN labels(n) AS Type, count(n) AS Count
ORDER BY Type;
四、查询数据
// 1. 节点统计
MATCH (n)
WITH labels(n) AS type, count(n) AS count
RETURN ‘节点统计’ AS 检查项, type AS 类型, count AS 数量
ORDER BY count DESC
UNION ALL
// 2. 关系统计
MATCH ()-[r]->()
WITH type® AS type, count® AS count
RETURN ‘关系统计’ AS 检查项, type AS 类型, count AS 数量
ORDER BY count DESC
UNION ALL
// 3. 电影统计
MATCH (m:Movie)
RETURN ‘电影数量’ AS 检查项, count(m) AS 数量, ‘’ AS 类型
UNION ALL
// 4. 演员统计
MATCH (p:Person)-[:ACTED_IN]->(:Movie)
RETURN ‘演员数量’ AS 检查项, count(DISTINCT p) AS 数量, ‘’ AS 类型
UNION ALL
// 5. 检查基努·里维斯
MATCH (keanu:Person {name: ‘基努·里维斯’})-[:ACTED_IN]->(m:Movie)
RETURN ‘基努·里维斯电影数’ AS 检查项, count(m) AS 数量, ‘’ AS 类型
UNION ALL
// 6. 检查黑客帝国系列
MATCH (m:Movie)
WHERE m.title CONTAINS ‘黑客帝国’
RETURN ‘黑客帝国系列电影数’ AS 检查项, count(m) AS 数量, ‘’ AS 类型
// 7. 基努·里维斯演过哪些电影?
MATCH (keanu:Person {name: ‘基努·里维斯’})-[r:ACTED_IN]->(movie:Movie)
RETURN keanu.name AS 演员, movie.title AS 电影, movie.year AS 年份, r.role AS 角色
ORDER BY movie.year
//8.基努·里维斯和哪些演员合作过?
MATCH (keanu:Person {name: ‘基努·里维斯’})-[:ACTED_IN]->(:Movie)<-[:ACTED_IN]-(other:Person)
WHERE other <> keanu
RETURN DISTINCT other.name AS 合作演员, collect(DISTINCT other.name) AS 合作者列表
//9.基努·里维斯 → 电影 → 演员 → 电影 → 导演
MATCH (keanu:Person {name: ‘基努·里维斯’})-[:ACTED_IN]->(movie1:Movie)<-[:ACTED_IN]-(actor:Person)-[:ACTED_IN]->(movie2:Movie)<-[:DIRECTED]-(director:Person)
WHERE actor <> keanu AND movie2 <> movie1
RETURN keanu.name AS 起点,
actor.name AS 演员,
movie2.title AS 电影,
director.name AS 导演
LIMIT 30
//10.可视化:3层关系图
MATCH path = (keanu:Person {name: ‘基努·里维斯’})-[:ACTED_IN]->(m1:Movie)<-[:ACTED_IN]-(actor:Person)-[:ACTED_IN]->(m2:Movie)
WHERE actor <> keanu
RETURN path
LIMIT 50

//11. 查询基努·里维斯 1-3 层的所有关系,显示为图形
MATCH path = (keanu:Person {name: ‘基努·里维斯’})-[:ACTED_IN|DIRECTED|PRODUCED|COLLABORATED*1…3]-(connected)
WHERE keanu <> connected
RETURN path
LIMIT 100

//12. 黑客帝国系列完整关系图
MATCH path = (movie:Movie {title: ‘黑客帝国’})-[:SEQUEL_OF*0…3]-(related)
RETURN path

//13. 基努·里维斯的合作演员网络(含电影节点)
MATCH path = (keanu:Person {name: ‘基努·里维斯’})-[:ACTED_IN]-(movie:Movie)-[:ACTED_IN]-(actor:Person)
WHERE actor <> keanu
RETURN path
LIMIT 50
//14. 沃卓斯基姐妹导演的所有电影及其演员
MATCH path = (director:Person {name: ‘沃卓斯基姐妹’})-[:DIRECTED]-(movie:Movie)<-[:ACTED_IN]-(actor:Person)
RETURN path
LIMIT 100
//15. 显示不同类型的彩色关系
MATCH (keanu:Person {name: ‘基努·里维斯’})-[r]-(connected)
WHERE keanu <> connected
RETURN keanu, r, connected
//16. 从基努·里维斯到所有相关节点的完整路径
MATCH path = (keanu:Person {name: ‘基努·里维斯’})-[*1…4]-(connected)
WHERE keanu <> connected
AND NOT (connected:Genre) // 可选:排除类型节点使图更清晰
AND NOT (connected:Award) // 可选:排除奖项节点
RETURN path
LIMIT 150
//17. 《黑客帝国》的完整关系网(演员、导演、公司、类型、奖项)
MATCH path = (matrix:Movie {title: ‘黑客帝国’})-[r]-(connected)
RETURN path
//18. 查找基努·里维斯到雨果·维文之间的所有路径
MATCH path = shortestPath((keanu:Person {name: ‘基努·里维斯’})-[*]-(hugo:Person {name: ‘雨果·维文’}))
RETURN path
//19. 查找最多 5 层的所有路径
MATCH path = (keanu:Person {name: ‘基努·里维斯’})-[:ACTED_IN|COLLABORATED*1…5]-(hugo:Person {name: ‘雨果·维文’})
RETURN path
//20. 黑客帝国系列的完整产业网络
MATCH path = (movie:Movie)-[:HAS_GENRE|PRODUCED|DIRECTED|ACTED_IN|WON_AWARD]-(connected)
WHERE movie.title CONTAINS ‘黑客帝国’
RETURN path
LIMIT 200

五、备份
Neo4j‑5.x 社区版执行 neo4j‑admin database dump,数据库运行状态下不允许 dump 导出,必须停止 Neo4j 服务;企业版才支持在线 dump。
systemctl stop neo4j
systemctl status neo4j
确认状态为 inactive(dead) 之后再执行导出
neo4j-admin database dump neo4j --to-path=/root/neo4j_backup
更多推荐
所有评论(0)