首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Neo4j:比较数组类型的关系属性

在Neo4j中,不能直接比较数组类型的关系属性

以下是一个使用Cypher查询语言比较数组类型关系属性的示例:

假设我们有一个简单的图,其中节点表示人,关系表示朋友关系:

代码语言:javascript
复制
(A:Person {name: 'Alice'})-[:FRIEND]->(B:Person {name: 'Bob'})
(A)-[:FRIEND]->(C:Person {name: 'Charlie'})
(B)-[:FRIEND]->(D:Person {name: 'David'})

我们想要找到与Alice和Bob都有共同朋友的人。我们可以使用以下Cypher查询:

代码语言:javascript
复制
MATCH (a:Person {name: 'Alice'})-[:FRIEND]-(commonFriend)-[:FRIEND]-(b:Person {name: 'Bob'})
RETURN DISTINCT commonFriend.name AS CommonFriends

这个查询首先找到Alice的朋友(commonFriend),然后找到这些朋友也是Bob的朋友。最后,返回共同朋友的名字。

如果你想要比较两个关系属性数组是否相等,你可以使用FILTERALL函数。例如,假设我们有一个表示兴趣的关系属性数组:

代码语言:javascript
复制
(A:Person {name: 'Alice'})-[:INTERESTED_IN]->(:Interest {name: 'Reading'})
(A)-[:INTERESTED_IN]->(:Interest {name: 'Traveling'})
(B:Person {name: 'Bob'})-[:INTERESTED_IN]->(:Interest {name: 'Reading'})
(B)-[:INTERESTED_IN]->(:Interest {name: 'Traveling'})

我们可以使用以下查询来找到具有相同兴趣的人:

代码语言:javascript
复制
MATCH (a:Person)-[:INTERESTED_IN]->(interestA), (b:Person)-[:INTERESTED_IN]->(interestB)
WHERE a <> b AND size((a)-[:INTERESTED_IN]->()) = size((b)-[:INTERESTED_IN]->())
WITH a, b, collect(interestA) AS aInterests, collect(interestB) AS bInterests
WHERE all(x IN aInterests WHERE x IN bInterests)
RETURN DISTINCT a.name AS PersonWithSameInterests, b.name AS Friend

这个查询首先找到具有相同兴趣数量的人,然后使用all函数比较两个数组是否相等。如果相等,则返回具有相同兴趣的人及其朋友。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • mysql 字段时间类型比较

    字段时间类型分为: ,,,,; 下面就分别介绍这几种时间类型区别 每个时间类型都有一个有效范围和一个零值,当指定类型值超过有效范围时,就会使用零值 YEAR 该类型表示年,格式为 有三种表示方法...对于类型复制,标准格式为,但不一定要这个格式 如果插入格式为则类似插入了,比如插入,相当于 如果插入格式为或则,那么其他位置就赋零值.比如 相当于,比如 相当于 在中,系统可以自动识别转化为标准格式....我们可以通过获取当前值 DATE 该类型表示年-月-日,标准格式为,但是中还支持一些不严谨格式:比如等其他符号来分割 在插入数据数据也可以使用 年份转换和上面的类型规则一样 可以使用...函数获取当前值 DATETIME 该类型表示YYYY-MM-DD hh:mm:ss,可以看出和类型结合体.所以赋值规则时和上面和时一样 TIMESTAMP 该类型表示为YYYY-MM DD hh...哈哈,到年后就别用这个类型了 这只是一个简单区分说明,具体时间类型说明 请参考 官方文档 https://dev.mysql.com/doc/refman/5.7/en/date-and-time-types.html

    4.6K80

    double类型大小比较方法

    问题 在Java中,int类型数据大小比较可以使用双等号,double类型则不能使用双等号比较大小,那若使用double类型时怎么进行比较呢?...方法 转换为字符串 如果要比较两个double数据字符串精度相等,可以将数据转换成string然后借助stringequals方法来间接实现比较两个double数据是否相等。...代码运行结果如下: (3)在误差范围内运行相等 两实数差在允许范围内认为相等即可认为是相等。...代码中0.0000001指范围(1e-6) 代码运行结果如下: 结语 针对如何在double类型比较大小问题,此处我们提供了三种解法,分别为先将它们转换类型变为字符串类型再进行比较,第二种是使用...注意第一种转换为字符串类型方法只适用于比较精度相同数据,并且只用于两者是否相等情况下。

    2K50

    C# - 实现类型比较

    如果某个类型实例需要与该类型其它实例进行比较或者排序的话,那么该类型就可以通过实现IComparable接口来达到此目的。 IComparable只提供了一个方法: ?...其中,针对比较性,System.object并没有支持,因为对于大多数类型而言,对它们实例进行比较排序是没有意义。...而进行比较排序时候,其比较只能是值,因为对引用进行比较排序是没有意义。 而==和!=操作符可以为原始数据类型和引用类型来使用,而>, =, <= 只能用于原始数据类型。...在自定义类型上实现比较 其实我通常不在我类型上去实现IComparable,包括引用类型和原始类型。...而如果Person是一个没有sealclass,那问题就更大了,以前文章里提到OOP继承问题、类型安全问题、相等性问题将全部出现。因为类型安全和比较性还是没法一起很愉快工作。反正会很混乱。。。

    1K20

    8种JavaScript比较数组方法

    在这里,我为前端开发列了一个比较数组方法清单。介绍一些基于“属性”值对数组进行排序方法。...我们可能会遇到一些其他方式来比较两个对象数组并发现它们差异,或者比较和删除重复项,或者比较两个对象数组并更新对象数组属性,或者在比较两个对象之后创建具有唯一数据数组方法对象数组。...让我们看看比较对象和执行操作不同方法是什么。 1、比较两个对象数组,删除重复项,根据属性合并对象 我们确实需要比较两个不同对象数组,并希望在两个对象匹配特定属性情况下合并这两个对象。...,合并和更新值(假设数组3,4共享相同ID) 有时我们确实会有这样需求,将两个不同属性与新属性值合并。...当我们要比较两个对象数组并根据匹配值更新特定属性时,可以使用这些函数。

    3.3K40

    如何通过反射获取属性名字和属性类型

    显然我们事先不知道要查哪个表,泛型dao基本要求就是对所有的表都适用,这就需要我们动态获取表名,基本思想可以是方法中传入一个类(前提是数据库中表和实体类都是一一对应实例,通过反射获取这个实体类中属性名和属性类型...反射是java中一个很重要特性,在不知道类中信息时候,利用反射我们可以获取到类中所有的信息,例如属性名,属性类型,方法名,还可以执行类中方法,很强大,在框架中大多数也是采用反射获取类中信息。...数组         Field[] fields = clazz.getDeclaredFields();         for (Field field : fields) {             ...,包括权限修饰符,属性类型属性名,这里String是java.lang.String,属性名和属性类型后面可以利用字符串截取获得实际想要数据。...也可以直接获取到属性类型,在Fileld类中有一个getGenericType方法: 在前面的for循环中加入下面这句话: String type = field.getGenericType().toString

    3.7K20

    python类型比较3种方式

    通过types模块类成员来判断,其实所有python中类型都是这个types模块中类型实例。...x) is types.InstanceType  #是否是自定义实例对象, isinstance函数不支持比较这个 通过已知类型比较,因为python中所有相同类型对象他们所引用类型都是同一个...,所以可以通过如下方式对比: type(x) == types(1) # 判断是否int 类型  type(x) == type('a') #是否string类型 type(x) is types...(1) # 判断是否int 类型    type(x) is type('a') #是否string类型 使用内建isinstance函数: Python可以得到一个对象类型 ,利用type函数:...其第一个参数为对象,第二个为类型名或类型一个列表。其返回值为布尔型。若对象类型与参数二类型相同则返回True。若参数二为一个元组, 则若对象类型与元组中类型名之一相同即返回True。

    1.5K30

    Field属性所对于关系代码分析

    Field 返回值 方法说明 Field getField(String name)返回一个 Field 对象,它反映此 Class 对象所表示public属性。...(可以获取父类方法) Field[] getFields()返回所有Field属性,它反映此 Class 对象所表示public属性。...(可以获取父类方法) Field getDeclaredField(String name)返回一个 Field 对象,该对象反映此 Class 对象所表示public/private属性。...(只获取当前类方法) Field[] getDeclaredFields()返回所有Field属性,该对象反映此 Class 对象所表示public/private属性。...(只获取当前类方法) 示例代码如下: @Slf4j public class Test { public static void main(String[] args) throws Exception

    34620

    NoSQL和关系型数据库比较

    、Access、FoxPro 等;相对应,常见 NoSQL 数据库有 MongoDB、Memcached、Redis、HBase、CouchDB、Neo4j、Cassandra、Riak 等。...我们将通过以下几个方面来比较 NoSQL 数据库与传统关系型数据库。 1) 使用成本 NoSQL:NoSQL 使用简单,易搭建,大部分是开源软件,比较廉价,任何人都可以使用。...关系型数据库:相对于NoSQL,关系型数据库通常需要安装部署,开源比较少,使用成本比较昂贵。尤其是 Oracle 数据库,需要花费大量资金购买,使用成本比较高。...2) 存储形式 NoSQL:NoSQL 具有丰富存储形式,如 key-value(键值对)形式、图结构形式、文档形式、列簇形式等,因此,它可以存储各种类型数据。...NoSQL 数据与传统关系型数据库是互补关系,对方劣势就是自己优势,反之亦然。

    1.8K10
    领券