neo4j 初步认识和使用
发布时间:2020-12-13 13:33:17 所属栏目:百科 来源:网络整理
导读:介绍 图形数据库(Graph Database)是NoSQL数据库家族中特殊的存在,用于存储丰富的关系数据,Neo4j 是目前最流行的图形数据库,支持完整的事务,在属性图中,图是由顶点(Vertex),边(Edge)和属性(Property)组成的,顶点和边都可以设置属性,顶点也称
介绍图形数据库(Graph Database)是NoSQL数据库家族中特殊的存在,用于存储丰富的关系数据,Neo4j 是目前最流行的图形数据库,支持完整的事务,在属性图中,图是由顶点(Vertex),边(Edge)和属性(Property)组成的,顶点和边都可以设置属性,顶点也称作节点,边也称作关系,每个节点和关系都可以由一个或多个属性。Neo4j创建的图是用顶点和边构建一个有向图,其查询语言cypher已经成为事实上的标准。 模型规则
w3c上面的教程和官网也可以参考 安装
1. tar -xvf 压缩包 2. cd 解压文件/bin 3. neo4j install 运行启动启动 sudo service neo4j start 或者 sudo neo4j start 关闭 sudo service neo4j stop 或者 sudo neo4j stop web访问http://localhost:7474/browser/ 初始用户为neo4j,密码为neo4j,登录后需要更改密码.web端的教程见w3c.但我更喜欢在命令行访问 命令行访问参考https://neo4j-client.net/,安装如下: sudo add-apt-repository ppa:cleishm/neo4j sudo apt-get update sudo apt-get install neo4j-client libneo4j-client-dev 登录: 默认端口是7687.密码是neo4j或你登录web端后更改的密码 neo4j-client -u neo4j localhost 7687 :quit //退出 你可以在neo4j-client命令行登录后更改密码: CALL dbms.changePassword('your new password') 使用
// 格式 create (node_name:lable_name { property1_name:property1_value p2:v2 p3:v3 }); // node_name 类型于关系型数据库的表的别名 // label_name 类似于表明一样,表明一类实体 // 例子 create (dog:DOG{name:"dog_name",age:20});
// 查询节点的某个属性 match(node_name:node_label) where node_name.p1=v1 return node.p3 as p3 // 查询整个节点 match(node_name:node_label) where node_name.p1=v1 and/or node_name.p2>v2 return node_name // 例如 match (dog:Dog) where dog.name = 'dog_name' return dog
// 给现有节点添加关系 match (a:A),(b,B) where a.p1=p1 and b.p2=v2 or ... create (a)-[r:R{p3:v3,p4:v4,...}]->(b) // 新建节点的同时创建关系,甚至可以在后面追加return create (a:A{...})-[r:R{...}]->(b:B{...}) return r // 查询关系 match (a:A)-[r:R]->(b:B) where a.p1=v1 or r.p2=v2 and b.p3=v3 return r
create (a:A:B...) ... // match match (a:A:B) 会返回label既是A也是B的node match(a:A) 会返回A,也返回A:B,即label包含A的节点
match (a:A) where a.p1=v1 delete a match (a:A) where a.p1=v1 delete a.p1 match (a:A) delete a // 删除所有AB之间的R关系 match (a:A)-[r:R]->(b:B) delete r // 同时删除关系和节点 match (a:A)-[r:R]->(b:B) where a.p1=v1 delete a,b,r
语法基本同delete match (a:A) where ... remove a.p1 return ... match (a:A)-[r:R]->(b:B) where ... remove r.p2
match (a:B) where ... set a.p1=v1
match (a:A) where ... return a.p1,a.p2,a.p3 order by a.p1,a.p2
match (a:A) return a.p1 as p1,a.p2 as p2 union match (b:B) return b.p1 as p1,b.p3 as p2 union all 同上,只是不去除重复行
match (a:A) return a limit 10 // 返回前10个结果
match (a:A) return a skip 10 // 跨过前十条结果
merge (a:A{p1:v1})-[r:R{...}]->(b:B{...}) 相当于 match (a:A)-[r:R]->(b:B) where a.p1=v1 and r... and b.... return a,r,b if a或b或r不存在,就create
match (a:A) where a.name is not null // 查询name值不为null的节点,即有name属性的节点
match (a:A) where a.name in ['given','zeng']
match (a:A) where ... return upper(a.p1) as p1
match (a:A) where ... return substring(a.p1,10) as p1
match (a:A) where ... return count(*) return max(a.age),min(a.age),avg(a.age),sum(a.age)
MATCH (a)-[movie:ACTION_MOVIES]->(b) RETURN STARTNODE(movie)
create index on a:A (p1) create index on :A (p1) drop index on :A (p1)
create constraint on (a:A) assert a.p1 is unique
where exists (a.name) //节点存在属性 where n.name contains 'giv' // 属性包含 where a.name starts with 'g' // 属性开头 where a.name ends with 'n' //属性结尾 where n.name=~'.*ive.*' // 使用正则表达式 导入数据csv格式:第一行是字段名,后面是每个字段的值 p1,p2 v1,v2 v1,v2 ... load csv with headers from "file path" as line merge (a:A{p1:line.p1,p2:line.2}) 官方文档 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |