zoukankan      html  css  js  c++  java
  • Cypher-(9)-增删改查

    更新图包括图的节点和关系的创建、更新和删除,也能更新图的节点和关系的属性、节点标签和关系类型。

    一,创建节点

    1,创建空的节点

    CREATE (n)
    CREATE (a),(b)
    

    2,创建带标签的节点

    CREATE (n:Person)
    CREATE (n:Person:Swedish)
    

    3,创建带标签和属性的节点

    CREATE (n:Person { name: 'Andres', title: 'Developer' })
    

    二,创建关系

    创建节点之前的关系

    1,在两个节点之间创建关系

    在两个节点之间创建关系,并设置关系类型

    MATCH (a:Person),(b:Person)
    WHERE a.name = 'A' AND b.name = 'B'
    CREATE (a)-[r:RELTYPE]->(b)
    RETURN type(r)
    

    2,创建关系,并设置关系的属性

    MATCH (a:Person),(b:Person)
    WHERE a.name = 'A' AND b.name = 'B'
    CREATE (a)-[r:RELTYPE { name: a.name + '<->' + b.name }]->(b)
    RETURN type(r), r.name
    

    3,CREATE子句和模式

    在CREATE子句和模式中,对于模式中的任意部分,如果它不存在于图中,那么CREATE子句创建它;如果存在于图中,那么就会引用它。

    CREATE p =(andres { name:'Andres' })-[:WORKS_AT]->(neo)<-[:WORKS_AT]-(michael { name: 'Michael' })
    RETURN p
    

    三,删除节点和关系

    使用delete子句删除节点、关系和路径,当删除节点时,该节点必须是孤立的节点,也就是说,必须首先删除跟节点相关的所有关系。

    detach delete: 表示删除一个节点或多个节点,跟节点相关的所有关系也都被删除。

    1,删除节点

    MATCH (n:Person { name: 'UNKNOWN' })
    DELETE n
    

    2,删除所有节点和关系

    MATCH (n)
    DETACH DELETE n
    

    3,删除一个节点和它的所有关系

    MATCH (n { name: 'Andres' })DETACH DELETE n
    

    4,删除关系

    MATCH (n { name: 'Andres' })-[r:KNOWS]->()DELETE r
    

    四,更新属性或标签

    set子句用于更新节点的标签,向节点和关系中添加属性

    1,向节点或关系中添加属性

    MATCH (n { name: 'Andres' })SET n.surname = 'Taylor'RETURN n.name, n.surname
    

    2,移除属性

    如果设置属性的值是NULL,相当于把该属性从节点或关系中移除

    MATCH (n { name: 'Andres' })SET n.name = NULL RETURN n.name, n.age
    

    3,复制属性

    把一个节点的属性复制给另一个节点

    MATCH (at { name: 'Andres' }),(pn { name: 'Peter' })SET at = pnRETURN at.name, at.age, at.hungry, pn.name, pn.age
    

    4,从Map中添加属性

    MATCH (p { name: 'Peter' })SET p += { hungry: TRUE , position: 'Entrepreneur' }
    

    5,在一条set子句中添加多个属性

    MATCH (n { name: 'Andres' })SET n.position = 'Developer', n.surname = 'Taylor'
    

    6,向节点中添加标签

    MATCH (n { name: 'Stefan' })SET n:GermanRETURN n.name, labels(n) AS labels
    

    7,向节点中添加多个标签

    MATCH (n { name: 'Emil' })SET n:Swedish:BossmanRETURN n.name, labels(n) AS labels
    

    五,移除属性

    使用remove子句从节点中移除标签和属性,从关系中移除属性。

    1,移除属性

    默认情况下,Neo4j不允许存在值为null的属性;如果属性不存在,那么返回该属性的值是null。

    MATCH (a { name: 'Andres' })
    REMOVE a.age
    RETURN a.name, a.age
    

    2,移除节点的标签

    MATCH (n { name: 'Peter' })
    REMOVE n:German
    RETURN n.name, labels(n)
    

    3,移除节点的多个标签

    当节点的标签为空时,labels(n)函数返回空的list

    MATCH (n { name: 'Peter' })
    REMOVE n:German:Swedish
    RETURN n.name, labels(n)
    

    六,foreach子句

    列表和路径是Cypher中的关键概念,foreach子句用于更新数据,例如,对路径中的元素或通过聚合创建的列表执行更新命令。

    1,对路径中的元素执行更新命令

    对路径中匹配的所有节点,添加marked属性,并设置属性值为TRUE

    MATCH p =(begin)-[*]->(END )
    WHERE begin.name = 'A' AND END .name = 'D'
    FOREACH (n IN nodes(p)| SET n.marked = TRUE )
    

    参考文档:

    Cypher Clauses

    转载于:https://www.cnblogs.com/ljhdo/p/10929708.html

  • 相关阅读:
    flask 使用Flask-SQLAlchemy管理数据库(连接数据库服务器、定义数据库模型、创建库和表) --
    flask 操作数据库(分类) --
    flask渲染模板时报错TypeError: 'UnboundField' object is not callable --
    flask用宏渲染表单模板时,表单提交后,如果form.validate_on_submit()返回的是false的可能原因 --
    flask 单个页面多个表单(单视图处理、多视图处理) --
    flask 单个表单多个提交按钮 --
    jython 2.7.1 版本开发历史
    TP v5中Url Compat模式
    乱弹
    改改"坏"代码
  • 原文地址:https://www.cnblogs.com/weijiqian/p/14840798.html
Copyright © 2011-2022 走看看