是否可以通过某些 属性 关系到 return 节点?
Is it possible to to return nodes with relationships by certain property?
根据 Neo4J 文档,我可以使用此代码
检查 return true/false 两个节点之间是否存在关系
MATCH (n)
WHERE EXISTS (n.name)
RETURN n.name AS name, EXISTS ((n)-[:MARRIED]->()) AS is_married
我想知道是否可以通过结婚日期(关系 属性)也匹配 return true/false。
示例:
MATCH (n)
WHERE EXISTS (n.name)
RETURN n.name AS name, EXISTS ((n)-[:MARRIED]->()) WHERE married_date = '2020-03-20' AS is_married
这将 return 真或假,如果实际上关系是否在日期匹配。
有什么想法吗?
谢谢。
您可以将 属性 内嵌在现有模式中:
MATCH (n)
WHERE EXISTS (n.name)
RETURN n.name AS name, EXISTS ((n)-[:MARRIED {married_date:'2020-03-20'}]->()) AS is_married
对于更复杂的过滤(过滤范围,或 pre/suffixes 或任何其他无法在模式本身中内联捕获的内容),我们需要查看其他选项。
也许最好的后备方法是使用 predicate functions over a pattern comprehension。
模式理解为我们提供了将关系投影到列表中的能力,any()
谓词函数可以检查是否有任何符合复杂谓词的关系,如下所示:
MATCH (n)
WHERE EXISTS (n.name)
RETURN n.name AS name, any(rel in [(n)-[r:MARRIED]->() | r] WHERE rel.married_date STARTS WITH '2020-03') AS is_married_in_march_2020
根据 Neo4J 文档,我可以使用此代码
检查 return true/false 两个节点之间是否存在关系MATCH (n)
WHERE EXISTS (n.name)
RETURN n.name AS name, EXISTS ((n)-[:MARRIED]->()) AS is_married
我想知道是否可以通过结婚日期(关系 属性)也匹配 return true/false。
示例:
MATCH (n)
WHERE EXISTS (n.name)
RETURN n.name AS name, EXISTS ((n)-[:MARRIED]->()) WHERE married_date = '2020-03-20' AS is_married
这将 return 真或假,如果实际上关系是否在日期匹配。
有什么想法吗?
谢谢。
您可以将 属性 内嵌在现有模式中:
MATCH (n)
WHERE EXISTS (n.name)
RETURN n.name AS name, EXISTS ((n)-[:MARRIED {married_date:'2020-03-20'}]->()) AS is_married
对于更复杂的过滤(过滤范围,或 pre/suffixes 或任何其他无法在模式本身中内联捕获的内容),我们需要查看其他选项。
也许最好的后备方法是使用 predicate functions over a pattern comprehension。
模式理解为我们提供了将关系投影到列表中的能力,any()
谓词函数可以检查是否有任何符合复杂谓词的关系,如下所示:
MATCH (n)
WHERE EXISTS (n.name)
RETURN n.name AS name, any(rel in [(n)-[r:MARRIED]->() | r] WHERE rel.married_date STARTS WITH '2020-03') AS is_married_in_march_2020