
neo4j
王仁勇
不忘初心,坚持学习并应用技术。
展开
-
《Cypher官方编程指南》
Cypher风格指南译者:wry2008wry@163.com原文:https://github.com/opencypher/openCypher/blob/master/docs/style-guide.adoc内容列表1. 为什么风格很重要2. 规则 2.1. 缩进和换行 2.2. 元字符 2.3. 大小写 2.4. 模式 2.5. 空格3. 建议 3.1. 图建模这是Cyphe...翻译 2018-05-17 15:12:06 · 2516 阅读 · 0 评论 -
neo4j中的分组查询
cypher语言中的分组与sql略有不同,在cypher中不用显式的写group by分组字段,由解释器自动决定:即未加聚合函数的字段自动决定为分组字段,如:with [ {name:'a',sex:'F',country:'CN',age:10}, {name:'b',sex:'F',country:'CN',age:10}, {name:'c',sex:'M...原创 2018-05-28 15:15:38 · 7557 阅读 · 1 评论 -
neo4j中图的存储结构
一直以为neo4j是使用十字链表(Orthogonal List)来存储图数据的,后面跟踪源代码发现并不是,因为十字链表是:结点中单独存放“入边”、“出边”两个指针分别指向结点的第一个入边出边(注意这里的“第一个”指有顺序可以按结点的物理id来排列,因为这会影响到后续边上的“同弧头”的指向)边上两个指针域名,一个指向现该边同终点的下一条边,一个指向与该边同起点的下一条边而neo4j中的结构更像是邻...原创 2018-05-28 17:21:06 · 3867 阅读 · 0 评论 -
neo4j图查询语言cypher中无处不在的笛卡尔积
一 什么是笛卡尔积笛卡尔积可以说是关系型数据的一个重要理论基础,它的意思是将两个集合中的元素两两组合形成一个新的集合,数据库中的多种连接方式(什么自然连接、内连接、外连接)都是在笛卡尔积的基础上加上一些条件形成的。以前学数据库理论的时候碰到笛卡尔积真的是不明白怎么会有这么奇怪的东西,为什么突然冒出一个要把两个集合里面的元素两两组合这么个怪东西呢,看起来简单又笨又没用。后来在工作中写sql时遇到很多...原创 2018-05-29 17:47:11 · 1370 阅读 · 0 评论 -
neo4j使用嵌入方式示例
操作系统:windows 7开发环境:IntelliJ IDEA 2016.1JAVA:1.81 打开 IDEA,新建一个Maven的空工程2 找到pom.xml加入所需的neo4j的maven库依赖,maven在编译时会自动去下载相关文件<dependencies> <dependency> <groupId>org.n...原创 2018-05-30 18:27:59 · 5137 阅读 · 0 评论 -
neo4j使用cypher求多个结点两两间的最短路径
with [3105, 200025928, 200025929, 151286502, 135660351] as id_listmatch (v:vertices) where v.id in id_list with collect(v) as nodes unwind nodes as source unwind nodes as target with source,t...原创 2018-06-21 17:01:03 · 4002 阅读 · 3 评论 -
cypher求最短路径shortestPath后的条件
shortestPath后的条件(谓词)会先执行,并不是先求出最短路径后再判断。我们知道最短路径使用双向BFS实现,也就是在每一步遍历的时候都会去判断是否满足条件。创建一个测试图:CREATE (n1:Person {name:'1'})CREATE (n2:Person {name:'2'})CREATE (n3:Person {name:'3'})CREATE (n4:Person {n...原创 2018-06-20 16:38:04 · 6372 阅读 · 0 评论 -
neo4j使用cypher查询路径避免出现环路
neo4j在使用可变长路径找两个点之前的所有路径时会返回包含环路的路径(一个点在路径中出现两次),如下面的语句:MATCH path = (x)-[:KNOWS*]-(y)可能返回a->b->c->d->b->e这样的路径,如图:解决方法:纯cypher实现MATCH path = (x)-[:KNOWS*]-(y) UNWIND NODES(path) AS n...原创 2018-07-03 16:07:13 · 9508 阅读 · 6 评论 -
neo4j browser中定义参数变量
概念在neo4j browser网页中调试cypher语句时,使用预先定义的变量会更方便且增加代码的可读性,类似于SQL语句中的参数。参数对当前会话有效,网页刷新变量消失。变量为一个kv的键值对。定义的语法是:param a:1, b:2或:param {a: 1, b: 2}如上,定义方式为一个冒号+param+空格+参数,注意有一个空格。有两种方式定义变量 :叠加的...原创 2018-10-09 16:42:47 · 2838 阅读 · 0 评论