美文网首页
Neo4j怎么判断节点的属性的类型

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

作者: 扣篮的左手 | 来源:发表于2019-01-02 16:54 被阅读0次

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

    APOC的安装:

    1. https://github.com/neo4j-contrib/neo4j-apoc-procedures/releases 下载对应的apoc jar 包放到Neo4j的plugin目录下;
    2. 修改配置文件,conf目录下的neo4j.conf,添加:
      dbms.security.procedures.unrestricted=apoc.*

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

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

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


    Tip:


    Neo.ClientError.Procedure.ProcedureRegistrationFailed

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


    应用:

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


    可以看到,苹果的颜色是一个字符串数组,长度是2,香蕉的颜色是一个字符串,长度是6,并不能通过size函数有效的区分。

    使用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:Fruit{name:'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]


    连接:

    APOC 用户手册 3.4.0.1 链接中包含可以查询APOC的过程和函数,如下

    查询APOC的过程和函数

    参考:

    http://neo4j.com.cn/topic/5ae72f3951bad0a10b198cca
    https://blog.csdn.net/HaiYang_Gao/article/details/81320889
    http://neo4j.com.cn/topic/5b5996abd40e09d75e4d235f

    相关文章

      网友评论

          本文标题:Neo4j怎么判断节点的属性的类型

          本文链接:https://www.haomeiwen.com/subject/ndtzlqtx.html