【问题标题】:neo4j union - post processing resultsneo4j union - 后处理结果
【发布时间】:2018-10-16 11:31:17
【问题描述】:

我需要一个查询来检查节点是否存在,该节点上的特定属性是否存在并使用大小写或其他东西对结果进行后处理。

例如:

CALL apoc.cypher.run("OPTIONAL MATCH (n:Location{SureName:'9144735079d813886326'}) RETURN CASE n.SubType WHEN null THEN 'Location was not loaded' ELSE n.SubType END AS 结果 UNION OPTIONAL MATCH ( n:Location{SubType:'Site',SureName:'914473507981388d6326'}) RETURN CASE n.SubType WHEN null THEN 'NotLoaded' ELSE n.SubType END as result", null) YIELD value AS rv

但我希望能够根据我得到的结果只返回一个字符串。

谢谢。

【问题讨论】:

  • 每个匹配是否最多对应一个节点?你还说你想要一个字符串作为结果,你能提供一个所需输出的例子吗?到目前为止,我认为这里不需要 UNION,但在我提供完整答案之前需要更多信息。
  • 匹配对应单个节点。用例是这样的:我在那个节点上有一个特定属性的值。如果属性存在,我想检查节点是否存在,以及 neo4j 中加载的值是否与我拥有的不同。根据结果​​,我想返回一个字符串。 EX:如果属性不存在 - “该属性未加载到 neo4j”。谢谢。
  • 我认为让我失望的一件事是,每个可选匹配项的 SureName 属性都不同。我可以假设这些是相同的吗?

标签: neo4j


【解决方案1】:

您应该能够使用 CASE 语句根据条件输出值。也许这样的查询可能会起作用:

// assume you've passed in $expectedSubType as a parameter
OPTIONAL MATCH (n:Location{SureName:'9144735079d813886326'}) 
WITH n, n IS NULL as notLoaded
RETURN CASE WHEN notLoaded THEN 'Location was not loaded' 
            WHEN n.SubType IS NULL THEN 'SubType missing'
            WHEN n.SubType = $expectedSubType THEN 'Expected value'
            ELSE 'Different value: ' + n.SubType END AS result

【讨论】:

  • 谢谢!这正是我所需要的。感谢您的时间!
猜你喜欢
  • 1970-01-01
  • 2019-04-11
  • 1970-01-01
  • 2013-02-18
  • 2013-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多