微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在密码中,在关系属性中返回具有最新日期的节点

如何解决在密码中,在关系属性中返回具有最新日期的节点

这是场景。我正在模拟一个住在一个或多个不同地点的人。关系中包括他们搬入时的开始日期(表示为自纪元以来的毫秒数)。

(:person{name:'bill'}) -[:livesAt {since:1111000}]->(:place{name:'apartmentA'})

(:person{name:'bill'}) -[:livesAt {since:2222000}]->(:place{name:'apartmentB'})

我想编写一个查询,返回与给定人员最近居住地对应的单个地点节点。最近的位置对应于关系的“since”属性中的最大值。请注意,同一地点可能住着多人。

我正在尝试这样的事情:

MATCH (n:person {name: 'bill'})-[r:livesAt]->(m:place)
WITH r
ORDER BY r.since DESC
LIMIT 1
MATCH (n:person)-[r]->(o:place)
RETURN o.name

如果我的查询适用于上面的示例,我希望返回“apartmentB”作为结果。

解决方法

问题(可能)出在最后一个匹配子句上。我在 Neo4j SandBox 上测试了一个更简单的版本,看起来不错:

MATCH (n:person {name: 'bill'})-[r:livesAt]->(m:place)
WITH n,m
ORDER BY r.since DESC
LIMIT 1
RETURN m.name as place,n.name as person
,

或者,您可以使用 max 子句获取关系的最大值,然后找到与最近住所对应的节点。

client.on('guildMemberAdd',member => {

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。