美文网首页图数据库
Neo4j - Cypher基础

Neo4j - Cypher基础

作者: 时见疏星 | 来源:发表于2016-09-03 10:21 被阅读0次

    1. 创建一个节点

    CREATE (ee:Person { name: "Emil", from: "Sweden", klout: 99 })
    
    • CREATE 创建数据
    • () 表示节点
    • ee:Person,ee是变量名,Person是label名称
    • {} 是节点属性

    2. 查找一个节点

    MATCH (ee:Person) WHERE ee.name = "Emil" RETURN ee;
    
    • MATCH指定一个节点或关系的模式
    • (ee:Person) 单一节点,Person为label,把值给变量ee
    • WHERE 来限制结果
    • ee.name = "Emil" 比较 name 的值和 "Emil"
    • RETURN 用于返回特定的结果

    3. 创建多个节点和关系

    MATCH (ee:Person) WHERE ee.name = "Emil"
    CREATE (js:Person { name: "Johan", from: "Sweden", learn: "surfing" }),
    (ir:Person { name: "Ian", from: "England", title: "author" }),
    (rvb:Person { name: "Rik", from: "Belgium", pet: "Orval" }),
    (ally:Person { name: "Allison", from: "California", hobby: "surfing" }),
    (ee)-[:KNOWS {since: 2001}]->(js),(ee)-[:KNOWS {rating: 5}]->(ir),
    (js)-[:KNOWS]->(ir),(js)-[:KNOWS]->(rvb),
    (ir)-[:KNOWS]->(js),(ir)-[:KNOWS]->(ally),
    (rvb)-[:KNOWS]->(ally)
    

    在同一个上下文中,变量名(如ee,js)用于关系中节点的引用,其中ee是通过MATCH获得的node,js是新创建的node。

    CREATE (节点1), (节点2), (节点3), (节点4), 
                 (节点1)-[关系1]->(节点2),
                 (节点2)-[关系2]->(节点3),
                 ......
    

    4. 模式匹配

    模式匹配用于描述要在图中寻找的内容

    MATCH (ee:Person)-[:KNOWS]-(friends)
    WHERE ee.name = "Emil" RETURN ee, friends
    
    • MATCH 语句描述了已知节点到待找节点的关系模式
    • (ee) 模式始于Person (由 WHERE 提供)
    • -[:KNOWS]- 匹配 "KNOWS" 关系 (任意方向)
    • (friends) 会和 Emil 的 friends 绑定

    5. 推荐

    模式匹配能用来推荐,Johan正在学冲浪,他想找一个会冲浪的新朋友。

    MATCH (js:Person)-[:KNOWS]-()-[:KNOWS]-(surfer)
    WHERE js.name = "Johan" AND surfer.hobby = "surfing"
    RETURN DISTINCT surfer
    
    • () 空括号忽略这些节点
    • DISTINCT 因为有多于一条的路径符合模式
    • surfer 包含了 Allison, 朋友的朋友而且会冲浪

    6. 分析

    如果你想了解查询是如何进行的,可以在查询语句之前加上EXPLAINPROFILE

    PROFILE MATCH (js:Person)-[:KNOWS]-()-[:KNOWS]-(surfer)
    WHERE js.name = "Johan" AND surfer.hobby = "surfing"
    RETURN DISTINCT surfer
    

    Refs

    本文来自 Neo4j 的 :play cypher,是cypher这款图查询语言的入门教程。
    更多Cypher的内容可以参考 http://neo4j.com/docs/cypher-refcard/3.0/

    相关文章

      网友评论

        本文标题:Neo4j - Cypher基础

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