美文网首页
Neo4j -- Cypher基础

Neo4j -- Cypher基础

作者: JM68 | 来源:发表于2018-08-21 22:29 被阅读0次

    Cypher:

    Cypher是一种声明式描述性的图查询语言,能够实现简单高效的查询和更新图形数据库。Cypher语言的关键字不区分大小写,但属性值、标签、关系类型和变量是区分大小写的。

    创建节点:

    节点模式的构成:(Variable:Lable1{Key1:Value1,Key2:Value2})
    (Neo4j在创建新的节点时,会自动为节点设置ID值,节点ID是递增且唯一的)
    举例:

    CREATE 
          (`0` :Student {name:'JM68',age:'26'}) ,
          (`1` :Student {name:'ZWL',age:'26'})  
    

    创建两个节点,0,1是变量名,即节点的变量名,节点名为Student ,{}内是属性与属性值

    创建关系:

    关系的构成:StartNode - [Variable:RelationshipType{Key1:Value1,Key2:Value2}] -> EndNode(在创建关系时,必须指定关系类型)
    在Cypher中,关系分为三种:符号“--”,表示有关系,忽略关系的类型和方向;符号“-->”和“<--”,表示有方向的关系;
    举例:

    CREATE 
      (`0`)-[:`friend` {from:'2015'}]->(`1`)
    

    关系类型:friend朋友,属性from,属性值2015

    MATCH 查询:

    • 查询整个数据图形
    MATCH(`0`) return `0`
    
    • 查询跟指定节点有关系的节点
    match(`0`)--(:`Student`) 
    return `0`;
    
    • 查询有指定属性的节点
    match(n{name:'JM68'})
    return n;
    

    MERGE 对不存在的节点创建, 存在的返回

    • 通过merge子句匹配搜索模式

    匹配模式是:一个节点有Student标签,并且具有name属性;如果数据库不存在该模式,那么创建新的节点;如果存在该模式,那么绑定该节点;

    MERGE 
        (`0`:Student { name: 'JM68' })
    RETURN `0`;
    
    • 如果需要创建节点,那么执行on create 或 on match 子句,修改节点的属性;
    MERGE 
        (`0`:Student { name: 'JM68' })
        ON CREATE SET `0`.created = timestamp()
        ON MATCH SET `0`.updatetime = timestamp()
    RETURN `0`.name, `0`.created
    

    跟实体相关的函数

    • 通过id函数,返回节点或关系的ID
    MATCH (:Student { name: 'JM68' })-[r]->(`1`)
    RETURN id(r);
    
    • 通过type函数,查询关系的类型
    MATCH (:Student { name: 'JM68' })-[r]->(`1`)
    RETURN type(r);
    
    • 通过lables函数,查询节点的标签
    MATCH (:Student { name: 'JM68' })-[r]->(`1`)
    RETURN lables(`1`);
    
    • 通过keys函数,查看节点或关系的属性键
    MATCH (a)
    WHERE a.name = 'JM68'
    RETURN keys(a)
    
    • 通过properties()函数,查看节点或关系的属性
    CREATE (`0`:Person { name: 'JM68', age:26 })
    RETURN properties(`0`)
    

    相关文章

      网友评论

          本文标题:Neo4j -- Cypher基础

          本文链接:https://www.haomeiwen.com/subject/ltpsiftx.html