1.neo4j的介绍
https://cloud.tencent.com/developer/article/2110326
2.neo4j的安装 (为了方便推荐使用docker-compose)
version: '1.0'
services:
neo4j:
image: neo4j:5.20.0-community
container_name: neo4j-v1
volumes:
- ./conf:/var/lib/neo4j/conf
- ./import:/var/lib/neo4j/import
- ./plugins:/plugins
- ./data:/data
- ./logs:/var/lib/neo4j/logs
restart: always
ports:
- 7474:7474
- 7687:7687
environment:
- NEO4J_AUTH=neo4j/0123456789
docker run -d -p 7474:7474 -p 7687:7687 --name neo4j \
-e "NEO4J_AUTH=neo4j/123456" \
-v /usr/local/neo4j/data:/data \
-v /usr/local/neo4j/logs:/logs \
-v /usr/local/neo4j/conf:/var/lib/neo4j/conf \
-v /usr/local/neo4j/import:/var/lib/neo4j/import \
-v /usr/local/neo4j/plugins:/plugins \
neo4j:5.20.0-community
#Couldn’t load the external resource at: file:/xxx.csv ()
#docker版Neo4j的配置文件中没有配置dbms.directories.import参数,所以需要使用全路径导入
e.g:
load csv from "file:///var/lib/neo4j/import/triples.csv" as line create (:triples {from:line[1],relation:line[3],to:line[0]})
3.neo4j的语法使用 类比 mysql
3.1 创建节点
CREATE (<node1-name>:<label1-name>)-
[<relationship-name>:<relationship-label-name>]
->(<node2-name>:<label2-name>)
create (book:Book {id:1,pages:100,price:25,title:"活着"})
create (book:Book {id:2,pages:340,price:250,title:"Neo4j Tutorial"})
3.2 数据查询
#查看全部属性
match (book:Book) return book
#查询指定属性
match (book:Book) return book.id,book.pages,book.price,book.title
#价格范围查询
match (book:Book) where book.id price>20 and price<100 return book
#排序处理
match (book:Book) return book order by book.price desc
#排序+分页
match (book:Book) return book order by book.price desc skip 1 limit 10
#null查询
match (book:Book) where book.title is not null return book order by book.price desc
#统计数数量-# AGGREGATION聚合(count,max,min,avg)
match (book:Book) return count(*)
#常用函数toupper,tolower,substring,replace-字符串函数
3.3 关系函数
MATCH (a)-[movie:ACTION_MOVIES]->(b)
RETURN STARTNODE(movie)
4.4 delete用户删除节点
#删除所有数据
match (book:Book) delete book
#根据条件进行删除
match (book:Book) where book.id=122 delete book
4.5 remove 删除节点的某个属性
#删除所有数据的某个属性
match (book:Book) remove book.price return book
#根据条件删除某条记录的某个属性
match (book:Book) where book.id=1 remove book.price return book
4.6 set 添加数据属性
#给某条数据添加属性
MATCH (book:Book)
where book.id=1
SET book.price = 30
RETURN book
#给所有数据添加属性
MATCH (book:Book)
SET book.price = 30
RETURN book
#给某些数据添加某属性
MATCH (book:Book)
SET book.price = 30
RETURN book
4.7 UNION合并合并数据
function:它将两组结果中的公共行组合并返回到一组结果中。 它不从两个节点返回重复的行
limitations:结果列类型和来自两组结果的名称必须匹配,这意味着列名称应该相同,列的数据类型应该相同
syntax:
<MATCH Command1>
UNION
<MATCH Command2>
e.g:
MATCH (cc:CreditCard)
RETURN cc.id as id,cc.number as number,cc.name as name,
cc.valid_from as valid_from,cc.valid_to as valid_to
UNION
MATCH (dc:DebitCard)
RETURN dc.id as id,dc.number as number,dc.name as name,
dc.valid_from as valid_from,dc.valid_to as valid_to
4.8 索引
[Create, show, and delete indexes - Cypher Manual (neo4j.com)](https://neo4j.com/docs/cypher-manual/current/indexes/search-performance-indexes/managing-indexes/)
e.g:
CREATE INDEX node_range_index_name FOR (n:Person) ON (n.surname)
4.9 last but not least
在Neo4j中,“Id”是节点和关系的默认内部属性。 这意味着,当我们创建一个新的节点或关系时,Neo4j数据库服务器将为内部使用分配一个数字。 它会自动递增。
4.10 更多
参考资料:
文档资料
[neo4j 教程_w3cschool](https://www.w3cschool.cn/neo4j/)
视频资料
https://www.bilibili.com/video/BV1sG411s7zV/
服务器购买
[精选特惠 用云无忧_腾讯云优惠活动 (tencent.com)](https://cloud.tencent.com/act/pro/bestselling)