Neo4j Cypher查询多个关系的属性

时间:2013-10-03 20:58:19

标签: neo4j cypher

我更新了与属性Expirydate的关系。我想在遍历路径中排除所有过期的关系。查询条件是通过路径中的所有关系检查Expirydate。我收到了错误:

  

==> SyntaxException:   ==>   ==>认为我们应该在这里有更好的错误信息?通过发送此查询到cypher@neo4j.org来帮助我们。

以下是查询:

START sNode=node(530) 
MATCH sNode-[r:hasRegisteredPlate|inHouseHoldWith*1..2]->eNode 
WHERE eNode.NodeType = "Plate" and (rel in r:(not has(rel.ExpiryDate) or 
    (has(rel.ExpiryDate) and (rel.ExpiryDate<>'' or rel.ExpiryDate >'2013-10-04')))) 
RETURN eNode LIMIT 20

非常感谢任何帮助

1 个答案:

答案 0 :(得分:0)

您可以尝试使用谓词all

START sNode=node(530)
MATCH sNode-[r:hasRegisteredPlate|inHouseHoldWith*1..2]->eNode
WHERE eNode.NodeType = "Plate" and all(rel in r
  WHERE (not(has(rel.ExpiryDate)) or (has(rel.ExpiryDate) and (rel.ExpiryDate<>'' or rel.ExpiryDate>'2013-10-04')))
)
RETURN eNode LIMIT 20

您也可以尝试反向

WHERE eNode.NodeType = "Plate" and none(rel in r
  WHERE (has(rel.ExpiryDate) and rel.ExpiryDate<'2013-10-04')
)

请注意,我没有尝试过这些,如果它们不起作用,也许你可以在neo4j console中设置一个示例图。