[Neo4j系列二十] Cypher必知必会速查表四

neo4j 1年前 ⋅ 1064 阅读
Neo4j已经更新到4.0版本了,本文Cypher的相关查询语言也是匹配最新的4.0版本,后续版本肯定会不断更新,基本的查询应该不会有太大变动,希望这个速查表系列对大家有帮助。
  1. INDEX 索引
  • CREATE INDEX FOR (p:Person) ON (p.name)

为label为Person的节点增加name属性的索引

  • CREATE INDEX index_name FOR (p:Person) ON (p.age)

为label是Person的节点增加age属性的索引,并且索引名为index_name

  • CREATE INDEX FOR (p:Person) ON (p.name, p.age)

为label是Person的节点增加name与age属性的复合索引

  • MATCH (n:Person) WHERE n.name = $value

匹配筛选时自动使用索引

  • MATCH (n:Person)
        WHERE n.name IN [$value]

即便筛选条件是在list中,也可以自动使用索引

  • MATCH (n:Person)
        WHERE n.name = $value and n.age = $value2

自动使用复合索引,筛选条件必须都在复合索引的属性范围内

  • MATCH (n:Person)
        USING INDEX n:Person(name)
        WHERE n.name = $value

选择性使用单个或多个索引

  • DROP INDEX index_name

删除索引

  1. CONSTRAINT 约束
  • CREATE CONSTRAINT ON (p:Person)
        ASSERT p.name IS UNIQUE

创建属性值与节点类型唯一性约束,同时也会创建响应的索引;如果已经存在具有某个名字的Person,则无法执行新增操作

  • CREATE CONSTRAINT uniqueness ON (p:Person)

 ASSERT p.age IS UNIQUE

创建属性值与节点类型唯一性约束名称为uniqueness,同时也会创建响应的索引

  • DROP CONSTRAINT uniqueness

删除约束

  1. CALL 调用
  • CALL db.labels() YIELD label

调用数据库内置的函数db.labels(),用于依次列出获取数据库内所有节点label

  • CALL db.labels() YIELD label

RETURN count(label) AS count

调用数据库内置的函数db.labels(),用于获取数据库内所有节点label,并将YIELD的结果作为参数后续使用,这里使用count()函数,获取label的数量

  • CALL java.stored.procedureWithArgs

可以使用call调用外部封装的函数,如果需要传参,可以使用input,比如{input: 'foo'}

  • CALL {
  MATCH (p:Person)-[:FRIEND_OF]->(other:Person) RETURN p, other
  UNION
  MATCH (p:Child)-[:CHILD_OF]->(other:Parent) RETURN p, other
  }

使用call调用子查询

  1. IMPORT 导入
  • LOAD CSV FROM

'https://neo4j.com/docs/cypher-refcard/4.0/csv/artists.csv' AS line

CREATE (:Artist {name: line[1], year: toInteger(line[2])})

从CSV文件导入数据,并且创建节点,以列的索引对应属性

  • LOAD CSV WITH HEADERS FROM
'https://neo4j.com/docs/cypher-refcard/4.0/csv/artists-with-headers.csv' AS line
CREATE (:Artist {name: line.Name, year: toInteger(line.Year)})

从CSV文件导入数据,文件带有列名,用列名对应属性

  • USING PERIODIC COMMIT 500
LOAD CSV WITH HEADERS FROM
'https://neo4j.com/docs/cypher-refcard/4.0/csv/artists-with-headers.csv' AS line
CREATE (:Artist {name: line.Name, year: toInteger(line.Year)})

当导入大批量数据时,采用分批执行事务,每次按照一定数量导入,避免单次导入数据超内存

  • LOAD CSV FROM
'https://neo4j.com/docs/cypher-refcard/4.0/csv/artists-fieldterminator.csv'
AS line FIELDTERMINATOR ';'
CREATE (:Artist {name: line[1], year: toInteger(line[2])})

使用自定义的字段分隔符

  • LOAD CSV FROM
'https://neo4j.com/docs/cypher-refcard/4.0/csv/artists.csv' AS line
RETURN DISTINCT file()

返回LOAD CSV正在处理文件的绝对路径,如果没有LOAD CSV在处理则返回NULL

  • LOAD CSV FROM
'https://neo4j.com/docs/cypher-refcard/4.0/csv/artists.csv' AS line
RETURN linenumber()

返回LOAD CSV正在处理文件的行数,如果没有LOAD CSV在处理则返回NULL

  1. DATABASE MANAGEMENT 数据库管理
  • SHOW DATABASES

列出系统所有数据库及相关信息

  • SHOW DATABASE myDatabase

列出myDatabase数据库的相关信息

  • SHOW DEFAULT DATABASE

列出默认数据库的相关信息

  1. USER MANAGEMENT 用户管理
  • CREATE USER alice SET PASSWORD $password

创建新用户并设密码

  • ALTER CURRENT USER SET PASSWORD FROM $old TO $new

修改用户密码

  • DROP USER alice

删除用户


关于Cypher的系列先到此结束,这只是一个速查表,具体使用还需要靠自己慢慢探索与举一反三,这个速查表也并非很完美,关于4.0新功能中提到的有关多数据库,区别用户权限等应该只限企业版,所以在这个速查表并没有涉及。


[Neo4j系列十七] Cypher必知必会速查表一

[Neo4j系列十八]Cypher必知必会速查表二

[Neo4j系列十九] Cypher必知必会速查表三

Neo4j相关技术文章汇总


原创不易,求转发,求点“在看”,喜欢请关注,在这里有最真实的分享!

图片

 Python与知识图谱


更多内容请访问:IT源点

相关文章推荐

全部评论: 0

    我有话说: