Neo4j常用命令


巴介 发布于 2025-02-18 / 14 阅读 / 0 评论 /
create 创建没有属性的节点 create (nodeName:labelName) create (user:User) 创建带属性的节点 create (nodeName:labelName {propName:propValue}) create (user

create

创建没有属性的节点

    create (nodeName:labelName)
    create (user:User)

创建带属性的节点

    create (nodeName:labelName {propName:propValue})
    create (user:User {name: '张三', age: 20})

在没有属性的节点之间创建关系

见关系部分

使用属性创建节点之间的关系

见关系部分

为节点或关系创建单个或多个标签

    create (nodeName:labelName1:labelName2)
    create (user:User1:User2:User3)

match & return

mathch和return都不能单独使用,return必须搭配match使用,match必须搭配return、update、delete使用

检索节点的某些属性

    match (u:User) return u.name, u.age

检索节点的所有属性

    match (u:User) return u

按属性查询

# 查询id值为1007的User节点

    match (u:User {id:1007}) return u

检索节点和关联关系的某些属性

检索节点和关联关系的所有属性

查询多个节点的关系

查询多个节点的数据

    match (u:User),(a:Account) where u.id = 1001 and a.id = 20241212001 return u,a

where子句

语法结构:WHERE <condition> <boolean-operator> <condition>

set

现有节点添加新属性和值

现有节点更新属性值

添加属性

    match (u:User) set u.gender = '男'

修改属性

    match (u:User) set u.age = 19

搭配where条件,不指定where条件会更新所有数据

    match (u:User) where u.id=1001 set u.address = 'wuhan'

delete

删除没有关系的节点

    match(u:User) delete u

删除存在关系的节点detach

    match(u:User) detach delete u

删除所有节点

    match(u:User) delete u
    match(u:User) detach delete u

搭配where,不指定where条件会删除所有数据

    match(u:User) where u.id = 1001 detach delete u

remove

删除属性

    match (u:User) remove u.name

删除标签

    match (u:User) remove u:User

搭配where

# 删除属性

    match (u:User) where u.id=1004 remove u:age

# 删除标签

    match (u:User) where u.id=1004 remove u:User

order by

升序(默认)

    match (u:User) where u.id > 1 return u order by u.age

降序

    match (u:User) where u.id > 1 return u order by u.age desc

skip & limt

skip

    match (u:User) where u.id > 1 return u skip 2

limit

    match (u:User) where u.id > 1 return u limit 1

skip和limit可以实现分页

    match (u:User) where u.id > 1 return u skip 2 limit 1

match & where & order by & skip & limit组合

    match (u:User) where u.id > 1 return u order by u.age skip 1 limit 2

union

限制:结果列类型和来自两组结果的名称必须匹配,这意味着列名称应该相同,列的数据类型应该相同。

语法

# union

    match (u:User) return u.name as name,u.age as age 

    union

    match (s:Student) return s.name as name, s.age as age

# union all

    match (u:User) return u.name as name,u.age as age 

    union

    match (s:Student) return s.name as name, s.age as age

merge

创建数据

# create: Added 1 label, created 1 node, completed after 3 ms.

    create (user:User) 

# merge: no changes, no records

    merge (user:User)

# 执行两次创建两条数据

    create (user:User {name:'xxx', age:18})
    create (user:User {name:'xxx', age:18})

#执行两次只创建出了一条数据

    merge (user:User {name:'yyy', age:18})
    merge (user:User {name:'yyy', age:18})

检索数据

create的区别:

create可以创建出没有属性的节点,merge不会创建

create可以创建相同属性的节点,merge不会创建重复节点

null & in

关系

create (startNodeName:startLabelName) - [relationNodeName:relationLabelName {relationPropName:relationPropValue}] -> (endNodeName:endLabelName)

在两个现有节点之间创建无属性的关系

在两个现有节点之间创建有属性的关系

在两个新节点之间创建无属性的关系

在两个新节点之间创建有属性的关系

在具有WHERE子句的两个退出节点之间创建/不使用属性的关系

    match (u:User),(a:Account) where u.id = 1001 and a.id = 20241212001 create (u)-[r1:账号余额]->(a)

CQL函数

字符串函数

upper

    match (user:User) return upper(user.name)

lower

    match (user:User) return lower(user.name)

substring

    match (user:User) return substring(user.name,1,2)

replace

    match (user:User) return replace(user.name,'zha','123')

聚合函数

    count & max & min & sun & avg
    match (u:User) return count(u.age), max(u.age), min(u.age), sum(u.age), avg(u.age)

关系函数

startnode & endnode & id & type

    match (u:User) -[r:r1]->(a:User) return startnode(r),endnode(r),id(r),type(r)



是否对你有帮助?