我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

neo4j的节点或者关系里面,可以是简单的文字描述,但是也可以添加各种属性。并且,对于同样类似的节点,彼此之间的属性归属还可以不一致,这样就像是对json的描述一样,可以随意添加。那么,如何判断某个属性是否存在呢?这就是本文要表述的内容。

苏南大叔:neo4j图数据库,如何查询节点属性或关系属性是否存在? - 属性是否存在hero
neo4j图数据库,如何查询节点属性或关系属性是否存在?(图11-1)

大家好,这里是苏南大叔的程序如此灵动博客,这里记录苏南大叔和计算机代码的故事。本文描述neo4j图数据库的属性查询。本文测试环境:win10neo4j社区版@4.4.6java@11.0.14

龙套数据

龙套数据依然是neo4j自带的movie例子,每个person类型节点都自带born属性。为了测试方便,这里对数据进行了部分处理。

添加一个born属性为空的Person

create (n:Person{name:'sunan',born:''});

苏南大叔:neo4j图数据库,如何查询节点属性或关系属性是否存在? - 空字符串属性
neo4j图数据库,如何查询节点属性或关系属性是否存在?(图11-2)

MATCH (n:Person) RETURN n

苏南大叔:neo4j图数据库,如何查询节点属性或关系属性是否存在? - 总节点数
neo4j图数据库,如何查询节点属性或关系属性是否存在?(图11-3)

那么,类型为Person的节点就是134个,其中:

  • 默认没有born属性的节点是5个。
  • born节点,但是为空字符串的节点是1个。

苏南大叔:neo4j图数据库,如何查询节点属性或关系属性是否存在? - 默认没有born属性的节点
neo4j图数据库,如何查询节点属性或关系属性是否存在?(图11-4)

属性是否存在【不推荐exist】

传统的cypher写法,是使用exists函数。但是,系统提示:是个准备废弃的函数。

苏南大叔:neo4j图数据库,如何查询节点属性或关系属性是否存在? - 废弃的属性
neo4j图数据库,如何查询节点属性或关系属性是否存在?(图11-5)

属性存在:

match (x:Person) where exists (x.born) return x

苏南大叔:neo4j图数据库,如何查询节点属性或关系属性是否存在? - exists函数
neo4j图数据库,如何查询节点属性或关系属性是否存在?(图11-6)

属性不存在:

match (x:Person) where not exists (x.born) return x

苏南大叔:neo4j图数据库,如何查询节点属性或关系属性是否存在? - 属性不存在
neo4j图数据库,如何查询节点属性或关系属性是否存在?(图11-7)

属性是否存在【推荐is null】

属性存在:

match (x) where x.born is not null return x

苏南大叔:neo4j图数据库,如何查询节点属性或关系属性是否存在? - exists函数2
neo4j图数据库,如何查询节点属性或关系属性是否存在?(图11-8)

属性不存在:

match (x) where x.born is null return x

苏南大叔:neo4j图数据库,如何查询节点属性或关系属性是否存在? - 属性不存在2
neo4j图数据库,如何查询节点属性或关系属性是否存在?(图11-9)

属性是否是空字符串判断

match (x:Person{born:''}) return x
match (x:Person) where x.born='' return x

苏南大叔:neo4j图数据库,如何查询节点属性或关系属性是否存在? - 查询空字符串属性
neo4j图数据库,如何查询节点属性或关系属性是否存在?(图11-10)

match (x:Person) where x.born<>'' return x

苏南大叔:neo4j图数据库,如何查询节点属性或关系属性是否存在? - 属性不为空字符串的节点
neo4j图数据库,如何查询节点属性或关系属性是否存在?(图11-11)

相关文章

综述

更多neo4j经验文章,请点击下面的链接查看:

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   neo4j    cypher