Neo4J作为图数据库标准的一个实现,其功能还是非常强大的功能,并支持Cypher查询。目前其提供了3种版本:
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
假设举一个例子,在《猫和老鼠》的动画片里面,Tom[猫] 追赶Jerry[老鼠]; Jerry[老鼠]也追赶Tom[猫]。
其语法如下:
1.1 创建关系和节点,会重复创建
create (tom:Cartoon{name:"Tom"}) -[:RUN_AFTER] -> (jerry:Cartoon{name:"Jerry"})
1.2 创建关系和节点,不会重复创建
merge (tom:Cartoon{name:"Tom"}) -[:RUN_AFTER] -> (jerry:Cartoon{name:"Jerry"})
match(p:Cartoon) detach delete p
MATCH p=()-[r:RUN_AFTER]->() delete r return r
match(p:Cartoon) delete p
match(p:Cartoon) return p
create (tom:Cartoon{name:"Tom"}) -[:RUN_AFTER] -> (jerry:Cartoon{name:"Jerry"})
create (jerry) -[:RUN_AFTER] -> (tom)
return tom,jerrymerge(tom:Cartoon{name:"Tom"}) -[:RUN_AFTER] -> (jerry:Cartoon{name:"Jerry"})
merge(jerry) -[:RUN_AFTER] -> (tom)
return tom,jerrycreate (tom:Cartoon{firstName:"Tom", lastName:"Montague", age:13}) -
[:RUN_AFTER {since:"a long time ago", till:"forever", where:"verona"}] -> (jerry:Teen:Cartoon{firstName:"Jerry",lastName:"Capulet", age:13})
create (jerry) -[:RUN_AFTER] -> (tom)
return tom,jerrycreate (tom:Cartoon{name:"Tom", lastName:"Montague", age:13}) -
[:RUN_AFTER {since:"a long time ago", till:"forever", where:"verona"}] -> (jerry:Teen:Cartoon{name:"Jerry",lastName:"Capulet", age:13})
create (jerry) -[:RUN_AFTER] -> (tom)
return tom,jerrymerge(tom:Cartoon{name:"Tom", lastName:"Montague", age:13}) -
[:RUN_AFTER {since:"a long time ago", till:"forever", where:"verona"}] -> (jerry:Teen:Cartoon{name:"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 nmatch(n:Cartoon) where toLower(n.name)='jerry' return n order by n.age ASC SKIP 2 LIMIT 5match(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:Cartoon{name:"Jerry"}) where p.age=13 set p.age=14 match(p:Cartoon) set p.age=p.age+1 return pmatch(p:Cartoon) where p.age>=14 AND p.age<18 set p.age=p.age+1 return pmatch(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
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 目录下。
今天的总结就到此为止,如果大家有兴趣,可以点赞或者收藏;当点赞或者收藏的次数大于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
上一篇:Kafka的设计原理