Cypher 语句

类似SQL语句的graph query 语言,用于neo4j 图数据库

  • 创建标签为Person的节点,name,from,klout都属于该节点的属性
CREATE (ee:Person { name: "Emil", from: "Sweden", klout: 99 })
  • 创建节点,标签为Movie,大括号内为属性
CREATE (:Movie {title: 'The Matrix'})
  • 创建关联,所有满足条件的节点都会进行关联
MATCH (m:Movie),(u:User)
WHERE u.id= 3892080402 AND m.title = "The Matrix1"
CREATE (u)-[r:HAS_MOVIE]->(m)
  • 创建带属性的关联
MATCH (m:File),(u:Domain)
WHERE m.File="8931...0089" AND u.Domain="register.xxx.com"
CREATE (m)-[r:COMMUNICATE{Relation:"Communicate",AntiRelation:"Communicate"}]->(u)

  • 删除所有节点并返回节点数量
MATCH (n)
OPTIONAL MATCH (n)-[r]-()
WITH n,r LIMIT 50000
DELETE n,r
RETURN count(n) as deletedNodesCount
  • 删除节点
MATCH (project:Project {project_id: 5})
DELETE project
  • 删除节点及其所属的关系
MATCH (project:Project {project_id: 5})
OPTIONAL MATCH (project)-[r]-()
DELETE project, r
MATCH (n { name: 'Andy' })
DETACH DELETE n
  • 只删除节点对应的关系
MATCH (n { name: 'Andy' })-[r:KNOWS]->()
DELETE r
  • 清空与本节点有关联的节点
MATCH (User{ id: 3892080402}) --> (v:Movie) 
DETACH DELETE v

  • 单条修改
MATCH (m: Person{id: 1}) SET m.name = "newName" RETURN m
  • 多条修改
MATCH (m: Person{id: 1})
SET m += { content: "value", lastModified: "lastModifiedTime" }
RETURN m

  • 全部查询(需要标明查询的最大值是多少)
MATCH (n) RETURN n LIMIT 25
  • 按标签(Greeting)查询
MATCH (n:Greeting) RETURN n LIMIT 25
  • 查询指定人物
MATCH (ee:Person) WHERE ee.name = "Emil" RETURN ee;
  • 查询指定id
MATCH (project:Project {project_id: 1}) RETURN project
  • 查询指定数据的所有属性
MATCH (project:Project {project_id: 1})  
return properties(project) AS properties
  • 查询指定数据的id:
# node
MATCH (n)
WHERE id(n)= 0
RETURN n

# relationship
MATCH ()-[r]->()
WHERE id(r)= 0
RETURN r

  • 查询人物关联
MATCH (project:Project {project_id: 3})
OPTIONAL MATCH (project)-[r]-(n)
RETURN n

# :CONTAINS 为关系
MATCH (project:Project {project_id: 3})
OPTIONAL MATCH (project)-[:CONTAINS]-(n)
RETURN n

  • 查询是否存在指定关系:HAS_MOVIE
MATCH (u:User {id:3892080402})
OPTIONAL MATCH (u)-[r:HAS_MOVIE]->(m)
RETURN r IS NOT NULL AS result 
  • 查询孤儿节点
match (n) where not (n)–[]-() return n;
  • 查询节点中的列表元素中是否包含某一字符串
MATCH (n) where 'BOT' in n.Names RETURN n
  • 模糊查询某一节点元素,例:返回 name 中包含 car 的节点&关联
MATCH (n)
WHERE n.name =~ '.*car.*'
RETURN n

Constraint

  • 将Movie中的title属性设置为primary key
    • 无法用CREATE添加title相同的节点
    • Constraint变量无法被SET指令修改
    • UniqueMovieTitleConstraint 作为该constraint的唯一标识符,不可以和其他constraint重合。
CREATE CONSTRAINT UniqueMovieTitleConstraint ON (m:Movie) ASSERT m.title IS UNIQUE
  • 获取当前database的constraint
CALL db.constraints()
  • 删除constraint
DROP CONSTRAINT UniqueMovieTitleConstraint 
  • 节点中存在多个constrain的情况:node key
    • node key作为constraint,在创建节点时必须被赋值
    • node key在全部重合时会被认为是重复的节点
CREATE CONSTRAINT UniqueNameBornConstraint
       ON (p:Person) ASSERT (p.name, p.born) IS NODE KEY
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值