【neo4j】Neo4j-Cypher、py2neo常用操作整理

这篇博客详细介绍了如何使用Cypher进行Neo4j数据库的操作,包括创建节点和关系、查询、修改、排序、导入CSV文件以及使用索引。同时,讲解了Python库Py2neo的使用,如连接数据库、创建和查询节点及关系、处理CSV数据等。此外,还提供了多个实用示例,涵盖了从基础操作到高级功能的各个方面。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Cypher

文档链接: https://neo4j.com/docs/cypher-manual/4.3/.

1.创建
  • 创建结点
    create (n:teacher{name:“2”,id:”teacher1”}) return n
  • 创建关系
    MATCH (a:TEST),(b:TEST)
    WHERE a.name = ‘TEST-NAME’ AND b.name = ‘TEST-NAME1’
    CREATE (a)-[r:RELTYPE] -> (b)
    RETURN r
2.查询
  • 显示所有
    MATCH(n) RETURN n
  • 显示20个结点
    MATCH(n) RETURN n limit 20
  • 查询结点
    MATCH(n:User{name:“2”}) RETURN n
  • 查询关系
    match ()-[r:watch]->() return r
  • 根据属性查询结点
    match(n:course) where (n.marked=TRUE) return count(n)
  • 根据关系类型查询
    match(n)-[r]->(m) where type®=“teach” return n
  • 查询结点数量
    MATCH(n:User{name:“2”}) RETURN count(n)
  • 查询结点数量
    MATCH(n:User{name:“2”}) RETURN count(n)
  • 查询有关系的结点
    match(n) where ((n)-[]-()) return n
  • 查询没有关系的course结点
    match(n:course) where not ((n)-[]-()) return n
  • 查询与course没有关系的结点
    match(n) where not ((n)-[]-(p:course)) return n
  • 查询结点的所有标签、每个标签的节点数量
    MATCH (n) RETURN distinct labels(n), count(*)
  • 查询ID结尾是”数学”的结点
    match(n) where n.id ENDS WITH ‘数学’ return n
  • 查询ID开头是”数学”的结点
    match(n) where n.id START WITH ‘数学’ return n
    match(n) where n.id =~ ‘数学.*’ return n
  • 查询ID开头是”and”(不区分大小写)的结点
    match(n) where n.id =~ ‘(?!)数学.*’ return n
  • 查询ID结尾是”.com”的结点
    match(n) where n.id =~ ‘.*\.com’ return n
  • 查询ID包含”数学”的结点
    match(n) where n.id CONTAINS ‘数学’ return n
  • 查询含有属性name的结点
    match(n) where exists (n.name) return n
  • 查询A类型或B类型的关系
    match()->[r:A|:B]->() return r
  • 查找结点之间的所有最短路径
    match(n),(m),p=allShortestPaths((n)-[*]-(m))
  • 查找结点之间的最短路径,路径最大长度为10
    match(n),(m),p=shortestPath((n)-[*…10]-(m)) return p
  • 查找结点的1~3跳关系(有点不确定,慎用)
    match(n)-[r:SHIP*1…3]-(m)
  • 查询并显示多个关系
    MATCH p=()-[r:prerequisite]->(),q=()-[wr:taught]->() RETURN p,q
3.修改

Delete用于删除图元素(节点、关系、或路径),若要也删除与之相连的关系则用detach delete。
remove 语句用于删除图元素的属性和标签。

  • 清空数据库
    match (n) detach delete n
  • 添加结点的属性(若结点不存在会新建结点)
    MERGE (n:Course) ON MATCH SET n.name=”yang”
  • 删除节点及其相关关系
    match (n:teacher) detach delete n
  • 删除结点属性
    match (n {name: “huzong”}) remove n.age
  • 删除结点标签
    match (n {name “huzong”}) remove n:teacher
  • 删除结点多个标签
    match (n {name “huzong”}) remove n:teacher:user
  • 删除结点/关系
    MATCH (n:User) -[r:study]-(p:Course{name:“f”}) DELETE n,r,p
  • 设置与course结点有关的路径上的结点的属性
    MATCH p = (t:course)-[r]-(A) FOREACH (n in nodes§| SET n.marked = TRUE )
4.排序 ORDER BY

Order by 是紧跟RETURN或者WITH的子句。

  • 根据属性对节点进行排序
    MATCH (n) RETURN n.name ORDER BY n.name,n.id
  • 节点降序排列
    MATCH (n) RETURN n.name ORDER BY n.name DESC
5.导入csv文件(load csv)

比admin慢,比py2neo快。

  • LOAD CSV FROM “file:///entities/teacher.csv” AS row 后续用row[0]、row[1]来读取相应信息,若文件有头行,则用row.id和row.name来读取对应的属性值。此处是绝对路径,文件要放在import目录下。
    在这里插入图片描述
  • 若csv文件很大,则用USING PERIODIC COMMIT LOAD CSV FROM “file:///entities/teacher.csv” AS row
6.索引
  • 创建索引
    create index on:Student(name)
  • 删除索引
    drop index on:Student(name)
  • 创建唯一索引
    create constraint on (s:Teacher) assert s.name is unique
  • 删除唯一索引
    drop constraint on (s:Teacher) assert s.name is unique

py2neo

1.连接数据库
from py2neo import *
from py2neo.matching import *
test_graph = Graph(         # 连接Neo4j,test_graph为自己命名的,后面调用都要使用这个test_graph
    "http://localhost:7474",
    auth=(
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值