我们知道cypher语句中可以使用 IN [1,2,3] 来达到过滤集合数据的功能,那怎么实现NOT IN 呢?
经过研究cypher函数,我找到了方法。就是使用none()函数函数,这个函数的意思是没有一个元素满足条件。
用这个函数就可以写出NOT IN 效果。例如,排除关系ID不在一个集合里的数据,就可以写出如下语句
match (c:Company)-[r*..2]-(d) where id(c)=0 and id(d) <> 0
and none(x in r where id(x) in [78,79])
return d,r,order by size(r)
语句中的none(x in r where id(x) in [78,79]) 就是排除关系ID是78和79的数据,其他属性字段可以同理操作。
这里来复习下cypher的
函数
参考资料:
https://www.cnblogs.com/ljhdo/p/10919763.html
一,谓词函数
谓词函数返回true或者false,主要用于检查是否存在或满足特定的条件。
1,Exists
如果指定的模式存在于图中,或者特定的属性存在于节点、关系或Map中,那么函数返回True
例如,节点具有name属性,并check图中是否存在特定的模式:
MATCH (n)
WHERE exists(n.name)
RETURN n.name AS name, exists((n)-[:MARRIED]->()) AS is_married
2,检查集合元素
all()表示所有的元素都满足条件,any()表示至少一个元素满足条件,none()函数表示没有一个元素满足条件,single()表示只有一个元素满足条件
例如,ALL谓词表示,在路径中,所有节点都必须具有age属性,并且age属性值都必须大于30&#
match (a:hardfig)-[r]-() where not id(a) in [1345 ,1346 ,1298 ] return a
注意是: not id(a) in
而不是: id(a) not in
Neo4j
入门详解
项目
中
某种特殊的场景,
使用
图形数据库比较有独特的优势。所以经过一个多月的奋战终于把项目上线了。本次
使用
上了图形数据库是
neo4j
社区版,因为数据量不到一个亿,只是关系比较复杂所以社区版基本上“够用”。后续货陆续分享,我对
neo4j
社区版高可用相关方面的总结(探活,监控告警,热备,控制台等)
本次将一些
neo4j
的一些入门基础知识,做一次项目后的整理总结(ps : 有些知识点...
在 Java代码
中
创建
Neo4j
新节点 Node 或者新 Relationship 的时候,需要在 Transaction 里面进行,然而当创建完毕,
使用
tx.commit() 关掉当前的 Transaction 之后,在 Transaction
中
的 Node 对象也就失效了。所以如果想在 Transaction 之外
使用
某个节点属性的值,需要在 Transaction 有效的时候获取并储存需要的属性值。如果先创建节点,之后还需要用到该节点,最好储存该点的id信息,
使用
一个 Transaction
有时候,我们需要查询某个两个节点,他们不存在某个关系。这样应该怎么弄呢。
https://
neo4j
.com/docs/
cypher
-manual/current/clauses/where/#existential-subqueries
其实只要用 EXISTS 关键字做子查询就好了:
MATCH (n1:Node)-[r1:Relation1]-(n1:Node)
WHERE NOT EXISTS {MATCH (n1:Node)-[r2:Relation2]-(n1:Node)}
AND r1.som
一、节点语法
Cpyher用一对括号来表示一个节点,节点的属性表示为键值对列表,括在一对大括号内。最简单的形式,()代表一个匿名的、无特征的节点。如果我们想在别处引用该节点,我们可以添加一个变量,例如:(matrix)。变量仅限于单个
语句
。它在另一个
语句
中
可能具有不同的含义或没有含义。
(matrix)
(:Movie)
(matrix:Movie)
(matrix:Movie {title: 'The Matrix'})
(matrix:Movie {title: 'The Matrix', r
十进制(整型和双精度型)的字面值:13, -4000, 3.14, 6.022E23
十六进制整型字面值(以0x开头):0x13zf, 0xFC3A9, -0x66eff
八进制整型字...
select 'true' from dual where (1,2) not in ((1,3),(3,null))
结果:true.
1找一个非null元素(范围比较目标项)开始首轮匹配,先匹配第一个元素
2比较元item的第1个元素为1,比较目标item的第1个元素分别为1,3,匹配比较目标item(1,3)成功,故首轮匹配有相等项
3首轮匹配有相等项,进行第2轮比较,限...
Cypher
手册详解
最近在研究知识图谱,避免不了的涉及到了图数据库和图算法,我们用的图数据库是
neo4j
,对其CQL语法做一个记录。整篇文章是对官网
Cypher
手册的翻译(正常访问超级慢,也许要...
因为最近需要建立关系图谱,因此接触到了
Neo4j
这种图数据库,以此做出关系的可视化,所以就来学习一下
Neo4j
的常用语法,
Neo4j
使用
的是
Cypher
,简称为CQL。本文
使用
的是
Neo4j
community
首先官方文档为:https://
neo4j
.com/docs/
cypher
-manual/current/clauses/。然后开始我的笔记:
csv文件的导入
neo4j
支持导入csv文件快捷生成,首先需要将要导入的csv文件放入
neo4j
文件夹
中
的import目录下:
使用
的例子如下:第一列为
Cypher
是一种声明性的图形查询语言,允许对图形进行表达性和高效的查询和更新。它的设计适合于开发人员和操作专业人员。
Cypher
设计简单,但
功能
强大;高度复杂的数据库查询可以很容易地表达出来,使您能够专注于自己的领域,而不是在数据库访问
中
迷失方向。............