【问题标题】:neo4j cypher APOC.case returns null propertiesneo4j cypher APOC.case 返回空属性
【发布时间】:2021-01-18 04:40:23
【问题描述】:

谁能解释为什么这个 apoc 过程在产生的值上返回空属性?在这个例子中,谓词是假的。

MATCH (p:Posts) 
 CALL apoc.when(
  p.region_audience IS NOT NULL AND NOT (2 IN p.region_audience),
  "RETURN null",
  "RETURN p AS post",
  {p:p})
YIELD value
RETURN value,p.title;

因此,如果您尝试使用 return value.title,则应该完全返回应该等于 pvalue,但您会得到 null。如果您返回p.title,您确实获得了称号。我知道这与yield 的计算方式有关。

任何帮助将不胜感激!

【问题讨论】:

  • 请给我们样本数据来处理。谢谢。

标签: neo4j cypher neo4j-apoc


【解决方案1】:

根据你的情况p.region_audience IS NOT NULL AND NOT (2 IN p.region_audience),apoc.when查询:

ifQuery 中,apoc.when 返回 RETURN nullvalue 将为 null)并在 elseQuery 返回 p,别名为 post

因此,要访问 apoc.when 查询的结果,您必须使用 ifQueryelseQuery 中给出的别名:value.post.title

请注意,如果执行ifQueryvalue 的结果将始终为null(当满足条件时)

【讨论】:

  • 我确实指出我正在检查的路径是谓词为假时..即返回 p 作为帖子。我确实测试了 value.post.title,即使它给出了正确的结果...我收到一条警告消息“提供的属性键不在数据库中”...:post。如果这是正确的解决方案,那么我不应该有警告......因为它可能无法在生产中工作
  • 这是 apoc.when 签名:apoc.when(condition, ifQuery, elseQuery, params ),所有关于条件是 true 或 false 没有其他。根据您的查询,在 ifQuery 中您 RETURN null 将使产生的值变为 null
  • 只有当谓词为真时结果才会为空......这就是我想要的......当谓词为真时,它工作正常。问题是当谓词为假时……这是我正在调查的路径……产生的值似乎不一致……嗯,值是正确的,但正如我上面所说的,有一个⚠️警告消息。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-31
  • 1970-01-01
  • 1970-01-01
  • 2013-12-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多