Neo4J入门笔记

Posted 大象无形,大音希声

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Neo4J入门笔记相关的知识,希望对你有一定的参考价值。

1.安装以及启动

Neo4J作为图数据库标准的一个实现,其功能还是非常强大的功能,并支持Cypher查询。目前其提供了3种版本:

  • 桌面版
  • 社区版
  • 企业版

    Neo4J其实现是基于Java实现的,所以JDK的安装是必须的,启动的方式官方文档有具体说明,笔者不在赘述,但是需要值得的一提的在windows的操作系统上通过PowerShell启动,其需要admin的管理员权限,但是并不是所有的电脑都有管理员权限,但是有Java的权限,
    假设你的neo4j的安装包是放在
D:\\neo4j-community-5.1.0

这个时候可以通过下面的命令进行启动。

java.exe -cp D:\\neo4j-community-5.1.0\\plugins\\*;D:\\neo4j-community-5.1.0\\conf\\*;D:\\neo4j-community-5.1.0\\lib\\* -XX:+UseG1GC -XX:-OmitStackTraceInFastThrow -XX:+AlwaysPreTouch -XX:+UnlockExperimentalVMOptions -XX:+TrustFinalNonStaticFields -XX:+DisableExplicitGC -Djdk.nio.maxCachedBufferSize=1024 -Dio.netty.tryReflectionSetAccessible=true -Djdk.tls.ephemeralDHKeySize=2048 -Djdk.tls.rejectClientInitiatedRenegotiation=true -XX:FlightRecorderOptions=stackdepth=256 -XX:+UnlockDiagnosticVMOptions -XX:+DebugNonSafepoints --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED -Dlog4j2.disable.jmx=true -Dfile.encoding=UTF-8 org.neo4j.server.CommunityEntryPoint --home-dir=D:\\neo4j-community-5.1.0 --config-dir=D:\\neo4j-community-5.1.0\\conf --console-mode

2. Neo4J Cypher语法的常见例子

假设举一个例子,在《猫和老鼠》的动画片里面,Tom[猫] 追赶Jerry[老鼠]; Jerry[老鼠]也追赶Tom[猫]。

其语法如下:

1.1 创建关系和节点,会重复创建

create (tom:Cartoonname:"Tom") -[:RUN_AFTER] -> (jerry:Cartoonname:"Jerry")

1.2 创建关系和节点,不会重复创建

merge (tom:Cartoonname:"Tom") -[:RUN_AFTER] -> (jerry:Cartoonname:"Jerry")
  1. 删除某个节点以及其所有的关系
match(p:Cartoon) detach delete p
  1. 只删除关系
MATCH p=()-[r:RUN_AFTER]->() delete r return r
  1. 只删除节点
match(p:Cartoon) delete p
  1. 查询节点和关系
match(p:Cartoon) return p
  1. 增加双向关系
create (tom:Cartoonname:"Tom") -[:RUN_AFTER] -> (jerry:Cartoonname:"Jerry")
create (jerry) -[:RUN_AFTER] -> (tom) 
return tom,jerry

merge(tom:Cartoonname:"Tom") -[:RUN_AFTER] -> (jerry:Cartoonname:"Jerry")
merge(jerry) -[:RUN_AFTER] -> (tom) 
return tom,jerry


create (tom:CartoonfirstName:"Tom", lastName:"Montague", age:13) - 
[:RUN_AFTER since:"a long time ago", till:"forever", where:"verona"] -> (jerry:Teen:CartoonfirstName:"Jerry",lastName:"Capulet", age:13)
create (jerry) -[:RUN_AFTER] -> (tom) 
return tom,jerry

create (tom:Cartoonname:"Tom", lastName:"Montague", age:13) - 
[:RUN_AFTER since:"a long time ago", till:"forever", where:"verona"] -> (jerry:Teen:Cartoonname:"Jerry",lastName:"Capulet", age:13)
create (jerry) -[:RUN_AFTER] -> (tom) 
return tom,jerry


merge(tom:Cartoonname:"Tom", lastName:"Montague", age:13) - 
[:RUN_AFTER since:"a long time ago", till:"forever", where:"verona"] -> (jerry:Teen:Cartoonname:"Jerry",lastName:"Capulet", age:13)
create (jerry) -[:RUN_AFTER] -> (tom) 
return tom,jerry

7.读取数据: 函数,ASC,SKIP,LIMIT不区分大小写,但是Label区分大小写

match(n:Cartoon) where n.name='Jerry' or n.firstName='Tom' return n

match(n:Cartoon) where toLower(n.name)='jerry'  return n order by n.age ASC SKIP 2 LIMIT 5

match(n:Cartoon) where toLower(n.name)='jerry'  return n order by n.age asc

8.关系查询带方向

match(p:Cartoon) - [l:RUN_AFTER] - () return r

9.更新数据

match(p:Cartoonname:"Jerry") where p.age=13 set p.age=14 

match(p:Cartoon) set p.age=p.age+1 return p

match(p:Cartoon) where p.age>=14 AND p.age<18 set p.age=p.age+1 return p

match(p:Cartoon) 
where p.age>=14 AND p.age<18  AND p.name IS NOT NULL
set p.smell='teenSpirit' 
set p.environment="dev"
return p

10.删除所有关系和节点

MATCH (n)
OPTIONAL MATCH (n)-[r]-()
DELETE n,r

3. 从CSV文件导入到Neo4j的语法如下

Neo4J默认提供了剧本的例子,从CSV导入neo4j的语法如下:

LOAD CSV WITH HEADERS FROM "https://data.neo4j.com/northwind/products.csv" AS row
CREATE (n:Product)
SET n = row,
n.unitPrice = toFloat(row.unitPrice),
n.unitsInStock = toInteger(row.unitsInStock), n.unitsOnOrder = toInteger(row.unitsOnOrder),
n.reorderLevel = toInteger(row.reorderLevel), n.discontinued = (row.discontinued <> "0")

需要注意的是,如果是直接从本地文件导入,则需要把"https://data.neo4j.com/northwind/products.csv" 换成 “files:///products.csv”
同时把products.csv文件放入到D:\\neo4j-community-5.1.0\\conf\\import 目录下。

4. 总结

今天的总结就到此为止,如果大家有兴趣,可以点赞或者收藏;当点赞或者收藏的次数大于5以后,说明此专题很受大家欢迎,我将会在补充和整理形成一系列文章.

其他博客推荐

https://blog.csdn.net/alex_xfboy/article/details/82970127?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EOPENSEARCH%7ERate-1-82970127-blog-128069525.pc_relevant_vip_default&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EOPENSEARCH%7ERate-1-82970127-blog-128069525.pc_relevant_vip_default&utm_relevant_index=1#t27

以上是关于Neo4J入门笔记的主要内容,如果未能解决你的问题,请参考以下文章

Neo4J入门笔记[1]---安装以及Cypher基本语法

Neo4J入门笔记[2]---Neo4J GDS 图数据科学库

Neo4J入门笔记[2]---Neo4J GDS 图数据科学库

neo4j入门

Neo4j学习--简单入门

手把手教你快速入门知识图谱 - Neo4J教程