Neo4j怎么判断节点的属性的类型

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Neo4j怎么判断节点的属性的类型相关的知识,希望对你有一定的参考价值。

参考技术A APOC是Neo4j 3.3版本推出时正式推荐的一个Java用户扩展过程包,里面包含丰富的函数和过程,作为对Cypher所不能提供的复杂图算法和数据操作功能的补充,APOC还具有使用灵活、高性能等优势。

APOC的安装:

启动neo4j,运行如下cypher,判断类型
return apoc.meta.type('hello') 返回 STRING ,注意返回值都是大写。
return apoc.meta.type(["hello", "world"]) 返回 LIST

create(n:Fruitname:'apple', color:['red', 'green'])
match(n:Fruit) return apoc.meta.type(n.color) 返回 STRING[]

return apoc.meta.type(1) 返回 INTEGER

Tip:

如果出现上面的错误,是因为安装的时候没有修改配置文件

应用:

对Neo4j中的数据进行修改,将字符串数组压平为字符串,但是该属性中既有字符串,又有字符串数组,需要判断该属性是哪种数据类型,进行相应的操作。Cypher自带的 size 函数,对于字符串返回的是字符串的长度,对于集合类型返回的是其中的元素个数。例如:
在前边 create(n:Fruitname:'apple', color:['red', 'green']) 的基础上 create(:Fruitname:'banana', color:'yellow')
查询 match(n:Fruit) return n.name, size(n.color)

使用apoc中的函数: apoc.meta.type()
查询 match(n:Fruit) return n.name, apoc.meta.type(n.color)

查找所有color属性为字符串数组类型的节点:
match(n:Fruit) where apoc.meta.type(n.color) = 'STRING[]' return n.name, n.color

此外 apoc.meta.typeName() 函数和 apoc.meta.type() 相同

压平:

对数据类型为字符串数组的属性值进行压平,中间用逗号隔开,逗号后边跟一个空格,末尾不带有括号。
create(n:Fruitname:'grape', color:['purple', 'green', 'white'])
match(n:Fruit) where apoc.meta.type(n.color) = 'STRING[]' return substring(reduce(s='', x IN n.color | s + ', ' + x), 2)
这里使用到了Cypher自带的 reduce 函数。

若将color属性为字符串数组的,设置为字符串数组中的第一个元素:
match(n:Fruit) where apoc.meta.type(n.color) = 'STRING[]' set n.color = n.color[0]

连接:

参考:

java怎么判断int是不是为空?

intpoint;Stringval=point+"";而是一个中间变量,intpoint=GiftInfo。getPoints();在数据库表中有属性字段名称points,类型为int。

java中的类型有基本类型:intlongdouble等,判断的为0(int)或者0。0(double\\float)对象类型:包括基本类型的包装类,Integer(int)DoubleFloat不给赋值的时候就为null了还有一个特殊的String,本身是对象类型也是基本类型。

面向对象

Java是一个面向对象的语言。对程序员来说,这意味着要注意应中的数据和操纵数据的方法(method),而不是严格地用过程来思考。在一个面向对象的系统中,类(class)是数据和操作数据的方法的集合。数据和方法一起描述对象(object)的状态和行为。

每一对象是其状态和行为的封装。类是按一定体系和层次安排的,使得子类可以从超类继承行为。在这个类层次体系中有一个根类,它是具有一般行为的类。Java程序是用类来组织的。

以上内容参考:百度百科-Java

参考技术A

先把int类型的数据转换成String类型,然后判断String类型的数据是否为空。 

示例代码:

int point;

String val=point +""; if("".equals(val)) // do something... 

PS:int point不是对象,int类型为空时默认为0。

还有方法是:

如果point是int类型,则得到的结果是不可能是null的。 
如果插入一条数据时没有插入给字段,而数据库里默认是null的值的话,可以使用 Integer point= GiftInfo.getPoints(); 
然后判断point是否等于空。 
示例代码:
Integer point= GiftInfo.getPoints();
if(point == null) // do something...
PS:GiftInfo.getPoints返回的是Integer类型,Integer类型是包括基本类型的包装类,不给赋值的时候为null。

参考资料

判断int类型是否为空.CSDN博客 [引用时间2017-12-27]

以上是关于Neo4j怎么判断节点的属性的类型的主要内容,如果未能解决你的问题,请参考以下文章

Neo4j 第二篇:图形数据库

为neo4j中的每个节点设置一个属性

节点导入neo4j数据库后,节点显示的都是数字ID,怎么让他显示中文?

neo4j-高效的原因(节点关系属性存储)

Neo4j 创建有数组属性的节点&关系深度

Neo4j-属性图和超图和三元组