zoukankan      html  css  js  c++  java
  • Neo4j 实战(二)-- neo4j 基础语句

    前言:

      这篇本章通过 neo4j 官方给出的 movie graph 例子学习 neo4j 基本的创建、查询、修改、删除语句。

    一、创建图谱

    1. 获取 Example Graph - Movie Graph 实例

     2. 导入官网的图谱创建语句

     下面展示了电影 "The Matrix" 的人物信息与关系:

     1 // create the profiles of actors
     2 CREATE (TheMatrix:Movie {title:'The Matrix', released:1999, tagline:'Welcome to the Real World'})
     3 CREATE (Keanu:Person {name:'Keanu Reeves', born:1964})
     4 CREATE (Carrie:Person {name:'Carrie-Anne Moss', born:1967})
     5 CREATE (Laurence:Person {name:'Laurence Fishburne', born:1961})
     6 CREATE (Hugo:Person {name:'Hugo Weaving', born:1960})
     7 CREATE (LillyW:Person {name:'Lilly Wachowski', born:1967})
     8 CREATE (LanaW:Person {name:'Lana Wachowski', born:1965})
     9 CREATE (JoelS:Person {name:'Joel Silver', born:1952})
    10 
    11 //create the relationships between the roles and actors
    12 CREATE
    13 (Keanu)-[:ACTED_IN {roles:['Neo']}]->(TheMatrix),
    14 (Carrie)-[:ACTED_IN {roles:['Trinity']}]->(TheMatrix),
    15 (Laurence)-[:ACTED_IN {roles:['Morpheus']}]->(TheMatrix),
    16 (Hugo)-[:ACTED_IN {roles:['Agent Smith']}]->(TheMatrix),
    17 (LillyW)-[:DIRECTED]->(TheMatrix),
    18 (LanaW)-[:DIRECTED]->(TheMatrix),
    19 (JoelS)-[:PRODUCED]->(TheMatrix)
    20 
    21 CREATE (Emil:Person {name:"Emil Eifrem", born:1978})
    22 CREATE (Emil)-[:ACTED_IN {roles:["Emil"]}]->(TheMatrix)

     导入成功!

     汤姆·汉克斯参演的电影

     二、查询语句

    1. 按名字查找某个实体 

    eg1: Find the actor named "Tom Hanks"...

     neo4j $ MATCH (tom {name: "Tom Hanks"}) RETURN tom 

     eg2: Find the movie with title "Cloud Atlas"...

     neo4j $ MATCH (cloudAtlas {title: "Cloud Atlas"}) RETURN cloudAtlas 

    2. 使用 limit 关键字限制查询实体个数

    eg: Find 10 people...

     neo4j $ MATCH (people:Person) RETURN people.name LIMIT 10 

    3. 使用 where 条件查询语句

    eg: Find movies released in the 1990s...

    neo4j $ MATCH (nineties:Movie) 
         WHERE nineties.released >= 1990 AND nineties.released < 2000
         RETURN nineties.title

    4. 已知一节点和关系查找另一节点信息

    eg1: List all Tom Hanks movies...

    neo4j $ MATCH (tom:Person {name: "Tom Hanks"})-[:ACTED_IN]->(tomHanksMovies) 
         RETURN tom,tomHanksMovies

     eg2: Who directed "Cloud Atlas"?

     neo4j $ MATCH (directors)-[:DIRECTED]->(cloudAtlas {title: "Cloud Atlas"}) 
          RETURN directors.name

     or

     neo4j $ MATCH (cloudAtlas {title: "Cloud Atlas"})<-[:DIRECTED]-(directors) 
          RETURN directors.name

    5. 查询某个节点上以同样关系连接的节点信息

    eg: Tom Hanks' co-actors...

    neo4j $ MATCH (tom:Person {name:"Tom Hanks"})-[:ACTED_IN]->(m)<-[:ACTED_IN]-(coActors) 
         RETURN coActors.name

     6. 查询与某结点有关系的所有结点信息

    eg: How people are related to "Cloud Atlas"...

     neo4j $ MATCH (people:Person)-[relatedTo]-(:Movie {title: "Cloud Atlas"}) 
        RETURN people.name, Type(relatedTo), relatedTo

    7. 查找两个节点的最短路径(不论任何关系)

    eg: Bacon path, the shortest path of any relationships to Meg Ryan

     neo4j $ MATCH p=shortestPath( (bacon:Person {name:"Kevin Bacon"})-[*]-(meg:Person {name:"Meg Ryan"}))
         RETURN p

     8. 查询两个结点的中介结点信息

    eg: Find someone to introduce Tom Hanks to Tom Cruise

    neo4j $ MATCH (tom:Person {name:"Tom Hanks"})-[:ACTED_IN]->(m)<-[:ACTED_IN]-(coActors),
         (coActors)-[:ACTED_IN]->(m2)<-[:ACTED_IN]-(cruise:Person {name:"Tom Cruise"})
         RETURN tom, m, coActors, m2, cruise

    9. 删除所有结点及关系

     neo4j $ MATCH (n) DETACH DELETE n or

     neo4j $ MATCH (n)-[m] DELETE n, m 

    三、总结

    1. 查询一般格式:(keyword  、variable 、  entity or relationship)

     MATCH (sub:subject)-[pre:predicate]->(obj:object) RETURN sub, pre, obj 

    2. 如果是单向关系需要注意箭头方向

  • 相关阅读:
    .Net Core主机配置
    .NET Core 初识
    控制反转IOC,依赖注入DI理解
    依赖倒置原则解析,理解面向抽象编程
    工厂模式
    IOC 概念
    利用Comparator排序
    使用Integer类实现二叉树排序
    先按成绩由高到低,相等则按年龄由低到高
    对象销毁之前进行某些操作
  • 原文地址:https://www.cnblogs.com/sheepcore/p/12486986.html
Copyright © 2011-2022 走看看