Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Neo4j 如果附加到节点集,则返回每个节点都具有特定值的节点_Neo4j_Cypher - Fatal编程技术网

Neo4j 如果附加到节点集,则返回每个节点都具有特定值的节点

Neo4j 如果附加到节点集,则返回每个节点都具有特定值的节点,neo4j,cypher,Neo4j,Cypher,我有一些用户可以将其可用性交给其他用户预订,获得以下信息: (u:User {Id = "1"})-[:USER_AVAILABILITY]->(a:Availability {Date = "2018-07-18", Booked = false}) 用户每天可以有一个节点可用,他说他是可用的。我想检查用户是否可用,例如:“2018-07-18”、“2018-07-19”、“2018-07-20”。因此,我需要检查用户是否拥有与节点日期值列表相关的所有节点。有可能吗 我使用的是neo4

我有一些用户可以将其可用性交给其他用户预订,获得以下信息:

(u:User {Id = "1"})-[:USER_AVAILABILITY]->(a:Availability {Date = "2018-07-18", Booked = false})
用户每天可以有一个节点可用,他说他是可用的。我想检查用户是否可用,例如:“2018-07-18”、“2018-07-19”、“2018-07-20”。因此,我需要检查用户是否拥有与节点日期值列表相关的所有节点。有可能吗

我使用的是neo4j的3.2.5版

我尝试了以下查询:

MATCH (u:User) WHERE u.Id = '1'
MATCH (u)-[:USER_AVAILABILITY]-(a:Availability)
WHERE a.Date = '2018-07-18'
MATCH (u)-[:USER_AVAILABILITY]-(a2:Availability)
WHERE a2.Date = '2018-07-19'
MATCH (u)-[:USER_AVAILABILITY]-(a3:Availability)
WHERE a3.Date = '2018-07-20'
RETURN u
但很明显,它不起作用,因为我只能通过一条路径一次。你有什么想法吗?

简单地说:

MATCH (u:User {id:'1'}),
      (u)-[:USER_AVAILABILITY]-(a:Availability),
      (u)-[:USER_AVAILABILITY]-(a2:Availability),
      (u)-[:USER_AVAILABILITY]-(a3:Availability)
WHERE a.Date = '2018-07-18' AND 
      a2.Date = '2018-07-19' AND 
      a3.Date = '2018-07-20'
RETURN u
简单地说:

MATCH (u:User {id:'1'}),
      (u)-[:USER_AVAILABILITY]-(a:Availability),
      (u)-[:USER_AVAILABILITY]-(a2:Availability),
      (u)-[:USER_AVAILABILITY]-(a3:Availability)
WHERE a.Date = '2018-07-18' AND 
      a2.Date = '2018-07-19' AND 
      a3.Date = '2018-07-20'
RETURN u

使用值列表时,可以使用all()确保谓词对列表中的所有值均为true。假设您将日期列表作为参数传递(例如,
$requiredDates
):


使用值列表时,可以使用all()确保谓词对列表中的所有值均为true。假设您将日期列表作为参数传递(例如,
$requiredDates
):


在这个例子中,id也应该是一个参数Thank man,工作得很好。为什么要将id作为参数?你的意思是为了查询重用,还是有什么我不知道的?当我在驱动程序中构建查询时,它会为我这样做,因此我不需要面对用例,但这是为了个人知识。是的,用于使用不同id为起始节点重用查询。在本例中,id也应该是一个参数Thank man,工作得很好。为什么要将id作为参数?你的意思是为了查询重用,还是有什么我不知道的?当我在驱动程序中构建查询时,它会为我做这件事,所以我不需要面对用例,但这是为了个人知识。是的,是为了使用不同的ID为起始节点重用查询。