Neo4j Browser(图数据库)学习笔记——Cypher

3 篇文章 0 订阅
2 篇文章 0 订阅

    一、Neo4j Cypher语言的创建是为了便于对图数据进行处理:

1.用模式匹配来描述图数据

2.熟悉SQL的条款(或者应该翻译为与SQL条款相近)

3.说明、描述查找什么,而不是怎么去寻找

    二、让我们用Cypher来创建一个简单的社交图节点:

CREATE (ee:Person {name:"Emil",from:"Sweden",klout:99}) ;

注:

1.Create用于创建数据

2.()用于标明一个节点

3.ee:Person 标明此节点的变量名为ee,标签为Person

4.{} 用于给节点添加属性(数据)

    三、现在找到这个代表Emil的节点:

MATCH (ee:Person) WHERE ee.name = "Emil" RETURN ee;

注:

1.MATCH用于指定(列举)节点和关系数据

2.(ee:Person) 用于限定匹配内容的标签为Person,若有符合条件的节点则赋值给变量ee

3.WHERE 用于添加查找限制条件

4.ee.name = "Emil" 查找name属性为"Emil"的数据

5.RRTURN返回查找结果

    四、Create可以同时创建多个节点和关系数据:

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)

    五、举例说明,可以通过以下方法找到Emil的朋友:

MATCH (ee:Person)-[:KNOWS]-(friends)
WHERE ee.name = "Emil" RETURN ee,friends

注:

1.Match用于描述从一个已知节点查找其他节点的模式匹配

2.(ee)从Person标签开始的模式匹配(通过WHERE进行限制)

3.-[:KNOWS]-符合“KNOWS”关系的节点(从另一个方向)

4.(friends)用于存储查找到的Emil的朋友

    六、模式匹配可以用于制作推荐。如Johan正在学习冲浪,所以他获取需要找一个已经会冲浪的新朋友:

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

注:

1.()空括号用于忽略那些节点(个人感觉是不加任何限制的意思)

2.DISTINCT 因为可能会有不止一条路径符合此模式匹配,用于返回唯一值(通俗的说去重···)

3.surfer用于存储查找到的结果(将会包含Allison,一个朋友的会冲浪的朋友)

    七、可以通过添加EXPLAIN 或PROFILE来了解查询的进行过程:

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值