查询Neo4j中的许多日期范围



我使用的是neo4j数据库。对于每一种关系,我都会在属性中保留一对日期,当关系成立时,这些日期会被间隔开,例如

{
"identity": 1,
"type": "HAS_NAME",
"properties": {
"start": 1989,
"end": 1990
}
}

这意味着这种关系在1989年至1990年间是真实的。现在,我想将属性扩展为具有许多日期对,例如

{
"identity": 1,
"type": "HAS_NAME",
"properties": {
"start1": 1989,
"end1": 1990,
"start2": 2001,
"end2": 2002,
"start3": 2010,
"end3": 2015,
...
}
}

这意味着这种关系在1989年至1990年、2001年至2002年以及2010年至2015年之间都是正确的。我希望能够按日期查询关系,例如";找到CCD_ 1和CCD_;。

在上面的例子中,我可以写

WHERE (queryEnd > start1 AND queryStart < end1) 
OR (queryEnd > start2 AND queryStart < end2) 
OR (queryEnd > start3 AND queryStart < end3)

然而,我不知道这段关系会有多少对。在neo4j中是否有标准的方法来实现这一点?我不必把这些日期保存在房产里。

由于在任意两个给定节点之间可以有多个相同类型的关系,因此可以为每个周期创建一个:HAS_NAME关系。只需使用进行匹配(假设您提供queryStartqueryEnd作为参数(

MATCH (n)-[r:HAS_NAMe]->(m)
WHERE ($queryEnd > r.start AND $queryStart < r.end) 

以检索关系。

最新更新