• Neo4j _sparql语言


    neo4j模糊查询

    我与Neo4j用户一起工作时经常看到的一种建模方法是创建非常通用的关系(例如HAS,CONTAINS,IS),并在关系属性或端节点的属性/标签上进行过滤。

    ——-----------------

    create (x:Node {属性名:‘属性值’})
    match (x),(y) where x.属性=‘’ and y.属性=‘属性值’ create (x)-[r:关系名{关系属性:属性值}]->(y)
    CALL db.labels()
    match (x) where x.属性 contains ‘’ return x

    标题原文链接:https://www.cnblogs.com/mzyn22/p/11098285.html

    一、添加操作

    1. 添加节点:

    create (x:学生{studentId:‘1001’,age:20}

    2. 添加关系:

    对现有的节点添加关系

    match (x:学生{studentId:1001}),(y:教师{tid:‘09’}) create (x)-[jx:课程{name:‘高数’}]->(y)

    match (x:学生),(y:教师) where x.studentId=‘1001’ and y.tid=‘09’ create (x)-[jx:课程{name:‘高数’}]->(y)

    添加节点并添加关系

    create (x:学生{studentId:1001})-[jx:课程{name:‘高数’}]->(y:教师{tid:‘09’})

    3. 根据节点的ID创建关系

    match (x:学生),(y:教师) where id(x)=254885 and id(y)=554896 create (x)-[jx:课程{name:‘高数’}]->(y)

    二、删除操作

    1. 删除节点:

    match (x:学生{studentId:1001}) delete x

    2. 删除关系:

    match (x:学生{studentId:1001})-[jx:课程{name:‘高数’}]->(y:教师{tid:‘09’}) delete jx

    3. 删除关系的同时,删除数据:

    match (x:学生{studentId:1001})-[jx:课程{name:‘高数’}]->(y:教师{tid:‘09’}) delete x,jx,y

    三、修改节点

    1. 给节点添加一个新的属性,两种方式:

    match(x:学生{studentId:‘1001’}) set x.age=21 return x

    match(x:学生{studentId:‘1001’}) set x+={age:21} return x

    2. 给节点添加属性并删除现有属性

    match(x:学生{studentId:‘1001’}) set x={age:21,name:‘abc’} //注意这里,会将studentId属性删除

    3. 添加新标签:

    match(x:学生{studentId:‘1001’}) set x:男生 return x //添加一个标签

    match(x:学生{studentId:‘1001’}) set x:男生:团员 return x //添加多个标签

    四、查询操作

    1. 根据节点属性查找对应节点:

    match(x:Student{studentId:‘1001’}) return x

    或者

    match(x:Student) where x.studentId=‘1001’ return x

    2. 根据关系查找节点

    match (x)-[r:教学内容]-(y) where r.课程=‘语文’ return x,r,y

    3. 查询单独的节点,即:与其他任何节点没有任何关系

    match(x) where not (x)-[]-() return x

    4. 查询N层关系的节点:

    match q=(x)-[*5…8]-() return q limit 200 这个为查询5到8层关系的

    match q=(dh)-[r]-(jq)-[rr]-()-[]-()-[]-()-[]-()-[]-()-[]-() return q limit 400

    5. 查询节点关系数个数:

    match(dh:学生)-[r]-(jq:老师) with dh, count® as dhs where dhs > 2 return dh

    6. 查询节点个数:

    match(x) return count(x)

    7. 查询所有的关系类型:

    CALL db.relationshipTypes()

    8. 查询所有的节点标签:

    CALL db.labels()

    9. 查询节点关系种类:

    CALL db.schema()

    10. 最短路径查询

    MATCH (x:电话{hm:“02711111111”}),(y:电话{sjdbh:“025111111111”}),p=shortestpath((x)-[*…10]-(y))RETURN p

    11. 查询不存在某个属性的节点

    match(x:电话) where x.repeat is null with x match p=(x)-[r*1…5]-(y) return p

    12. 查询存在关联到某一个节点具有相同属性的其他的节点

    match p=(x)-[]-()-[]-(y) where x.name=y.name return p

    13. 查询两个节点之间存在多个关系的节点

    match p=(x)-[r1]-(y)-[r2]-(x) where id(r1)<>id(r2) return p

    14. 查询某一个节点具有m到n层关系的所有的节点

    match q=(x:学生)-[*1…5]-() where x.no =‘201921011XXXX’ return q #查询某学生有关系的节点,最多五层关系

  • 相关阅读:
    MySQL 索引失效
    LeetCode50天刷题计划(Day 12—— 电话号码的字母组合(8.40-10.40)
    独有且优质,这些Mac软件绝了
    Rust检查一个Vec<String>是否包含一个特定的子字符串
    实验十 符号计算基础与符号微积分(matlab)
    Windows 10任务栏点不动了,右下角wifi、音量也都消失了,只剩下个时间
    【软件测试】大学毕业后顶着压力,巧合的开启了我人生的新篇章......
    C++day4
    Cadence OrCAD Capture复用参考设计时保持参考设计编号不变的情况下自动编号的方法
    备战数学建模42-缺失值和异常值的处理方法(攻坚战6)
  • 原文地址:https://blog.csdn.net/Hekena/article/details/126395742