如何解决如何检查 Neo4J Cypher 中是否存在 UNWIND 参数?
我有一个 Neo4J Cypher 查询,在某些情况下,某些参数可能不存在。
例如,在这部分语句中:
UNWIND statement.mentionsRelations as mentionsRelation
MATCH (c:Concept{name:mentionsRelation.name})
仅当 MATCH
存在时,我才想继续到 mentionsRelation.name
。
如何添加此支票?
我尝试使用 CASE
,但我认为我把它放在了错误的位置...
谢谢!
解决方法
使用可选匹配。如果没有找到匹配项,那么它将使用 NULL 作为模式的缺失部分。类似于 SQL 中的外连接。
NEW:
OPTIONAL MATCH (c:Concept{name:mentionsRelation.name})
OLD:
MATCH (c:Concept{name:mentionsRelation.name})
,
您可以使用 apoc.do.when
来指定谓词匹配时的查询,不匹配时的查询,例如:
WITH [{mentions: [],count:10},{mentions: []}] AS params
UNWIND params AS parameter
CALL apoc.do.when(parameter.count IS NOT NULL,'RETURN null AS c','MATCH (n:Person) RETURN count(n) AS c')
YIELD value
RETURN value
╒══════════╕
│"value" │
╞══════════╡
│{"c":null}│
├──────────┤
│{"c":10} │
└──────────┘
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。