#coding:utf-
__author__ = 'similarface' # 安装驱动:pip install neo4j-driver
from neo4j.v1 import GraphDatabase #建立连接
driver=GraphDatabase.driver("bolt://localhost:7687", auth=("***", "***")) #添加数据
def add_friends(tx, name, friend_name):
tx.run("MERGE (a:Person {name: $name}) "
"MERGE (a)-[:KNOWS]->(friend:Person {name: $friend_name})",
name=name, friend_name=friend_name)
#查询数据
def print_friends(tx, name):
for record in tx.run("MATCH (a:Person)-[:KNOWS]->(friend) WHERE a.name = $name "
"RETURN friend.name ORDER BY friend.name", name=name):
print(record["friend.name"]) with driver.session() as session:
session.write_transaction(add_friends, "刘备", "关羽")
session.write_transaction(add_friends, "刘备", "张飞")
session.write_transaction(add_friends, "刘备", "孔明")
session.read_transaction(print_friends, "刘备")

#导入数据
LOAD CSV WITH HEADERS FROM 'file:/all_samples.csv' AS line
CREATE (:User {barcode:line.barcode, name: line.name, sex: toInteger(line.sex),birthday:toInteger(replace(line.birthday, "-", "")),address:line.address}) #更新数据

LOAD CSV WITH HEADERS FROM 'file:/test.csv' AS line
merge(p:User {barcode:line.barcode})
on match set p.birthday=toInteger(line.birthday) return p.birthday

 
#创建索引
CREATE INDEX ON :User(name)

LOAD CSV WITH HEADERS FROM 'file:/all_shipv.csv' AS line
match(p:User {barcode:line.barcode1})
match(q:User {barcode:line.barcode2})
create (p)-[:s {v:line.shipv,c:line.centimorgan}]->(q)

#查询barcode为********* 并且它存在5个朋友

MATCH (n {barcode: '*********'})-[:s]-(friend)
WITH n, count(friend) AS friendsCount
WHERE friendsCount > 5
RETURN n, friendsCount

#查找barcode为********* 的朋友的朋友

MATCH (user:User { barcode: '*********' })-[r1:s]-()-[r2:s]-(friend_of_a_friend)
RETURN friend_of_a_friend.name AS fofName

#查找barcode为********* 的朋友的朋友 会返回更多的数据包括自己

MATCH (user:User { barcode: '*********' })-[r1:s]-(friend)
MATCH (friend)-[r2:s]-(friend_of_a_friend)
RETURN friend_of_a_friend.name AS fofName

同上:

MATCH (user:User { barcode: '*********' })-[r1:s]-(friend),(friend)-[r2:s]-(friend_of_a_friend)
RETURN friend_of_a_friend.name AS fofName

#如何反应flag字段

MATCH (n:User)
RETURN
CASE n.sex
WHEN 1
THEN '男'
WHEN 0
THEN '女'
ELSE '未知' END AS result ,n.name

#另一种格式的case

MATCH (n)
RETURN
CASE
WHEN n.eyes = 'blue'
THEN 1
WHEN n.age < 40
THEN 2
ELSE 3 END AS result

#UNWIND子句是把列表数据展开成一行一行的数据

neo4j使用笔记的更多相关文章

  1. Neo4j学习笔记(1)——使用API编写一个Hello World程序

    项目的创建及配置 因为Neo4j依赖的jar包比较多,所以推荐使用Maven来管理. 首先创建一个Maven Project,添加依赖: <dependency> <groupId& ...

  2. Neo4j学习笔记(2)——数据索引

    和关系数据库一样,Neo4j同样可以创建索引来加快查找速度. 在关系数据库中创建索引需要索引字段和指向记录的指针,通过索引可以快速查找到表中的行. 在Neo4j中,其索引是通过属性来创建,便于快速查找 ...

  3. neo4j 学习笔记

    1.参考 https://blog.csdn.net/appleyk/article/category/7408344 系列文章 (不支持 spring boo 2.0 以下的,入门可做参考) 2.底 ...

  4. Neo4j学习笔记

    1. 环境搭建 正好最近同学有一台阿里云服务器借我玩,就尝试着在服务器上搭了Neo4j. 环境:CentOS Linux release 7.4.1708 (Core) 安装Java 安装Neo4j需 ...

  5. Neo4j学习笔记(1)——使用Java API实现简单的增删改查

    阅读目录 项目的创建及配置 使用嵌入式数据库 创建节点和关系 查询及更新 删除关系和节点 完整代码 参考资料 回到顶部 项目的创建及配置 因为Neo4j依赖的jar包比较多,所以推荐使用Maven来管 ...

  6. Neo4j 学习笔记(-)

    Neo4j 的使用说明(一)(基于V3.4.9) 下一篇(二):https://www.cnblogs.com/infoo/p/11947467.html 一.Neo4j简介 Neo4j是一个高性能的 ...

  7. 暑假学习笔记(一)——初识Neo4j和APICloud入门

    暑假学习笔记(一)--初识Neo4j和APICloud入门 20180719笔记 1.Neo4j 接了学姐的系统测试报告任务,感觉工作很繁重,但是自己却每天挥霍时光.9月份就要提交系统测试报告了,但是 ...

  8. Neo4j/cypher学习笔记与学习建议

    简介 本笔记的主要内容是 cypher 查询语言的编写与使用. 笔记主要整理自w3cschool上的neo4j教程以及Neo4j中文网所提供的cypher中文文档,此外还包括少量从其他个人博客与官方手 ...

  9. Neo4j图数据库管理系统开发笔记之一:Neo4j Java 工具包

    1 应用开发概述 基于数据传输效率以及接口自定义等特殊性需求,我们暂时放弃使用Neo4j服务器版本,而是在Neo4j嵌入式版本的基础上进行一些封装性的开发.封装的重点,是解决Neo4j嵌入式版本Emb ...

随机推荐

  1. [Linux] ubuntu 安装 Wireshark

    Wireshark是一款非常流行的协议分析软件.自然可以网络抓包的需求. sudo apt-get install wireshark 出于安全方面的考虑,普通用户不能够打开网卡设备进行抓包,wire ...

  2. Java9模块化(Jigsaw)初识

    Java9经历了多次跳票,终于要在9月份正式发布,原计划Jigsaw在Java7就有的,也终于在Java9里面提供了,简单总结下. 对比 Java9 以前 上面2个图分别对应的分别是JDK8/9的目录 ...

  3. jQuery中的动画与效果

    1.基本效果 匹配元素从左上角开始变浓变大或缩小到左上角变淡变小 ①隐藏元素 除了可以设置匹配元素的display:none外,可以用以下函数 hide(speed,[callback])  返回值: ...

  4. EPF与Myeclipse 增强代码自动智能提示

    摘自: http://blog.csdn.net/ylchou/article/details/7639467 数字证书文件,导入用. EPF文件是著名的软件开发工具——Eclipse(IDE)的配置 ...

  5. ESLint:can not ESLint annotation...

    刚开始用webstorm开发VUE,提示这个东西: 安装一个npm库就可以了 命令行执行:npm install eslint -g

  6. (转)mysql的单向复制

    mysql的单向复制操作很简单:大概只需要二十分钟看完这篇文章就能搞定了.http://11837782.blog.51cto.com/11827782/1885967 为了提高主从服务器的健壮性,我 ...

  7. [AngularJS] $interval

    $interval provides an excellent service for timed operations in your AngularJS apps. It has the adva ...

  8. java线程总结(4/5)

    转自:http://blog.csdn.net/qiaqia609/article/details/8067356 整理的一些关于线程的面试题目: 46.java中有几种方法可以实现一个线程?用什么关 ...

  9. html中css三种常见的样式选择器

    1:标签选择器 标签选择器,是所有带有某种标签的都生效.这里以p为例,也就是所有的带有p标记的都会这样的样式 复制代码 代码如下: <html><head><stylet ...

  10. 聊聊iOS中网络编程长连接的那些事

    1.长连接在iOS开发中的应用 常见的短连接应用场景:一般的App的网络请求都是基于Http1.0进行的,使用的是NSURLConnection.NSURLSession或者是AFNetworking ...