【问题标题】:Why does DISTINCT within COLLECT() with OPTIONAL MATCH lead to ExecutionFailure since Neo4j 2.3.3?为什么自 Neo4j 2.3.3 以来 COLLECT() 中的 DISTINCT 与 OPTIONAL MATCH 会导致 ExecutionFailure?
【发布时间】:2016-03-30 03:34:52
【问题描述】:

我将 Neo4j 从 2.3.2 更新到 2.3.3,然后使用以下模式的查询导致 Neo.DatabaseError.Statement.ExecutionFailure。

OPTIONAL MATCH (f:DOES_EXIST)
OPTIONAL MATCH (n:DOES_NOT_EXIST)
RETURN collect(DISTINCT n.property), collect(DISTINCT f.property)

不知何故它在 2.3.2 中运行良好,有谁知道为什么以及如何解决这个问题?我想要的是查询一些模式并将它们作为不同的集合返回,如果可选模式不匹配,这些集合是空的。

【问题讨论】:

    标签: neo4j cypher


    【解决方案1】:

    [编辑]

    2.3.3 似乎有一个错误(我已经为此提交了an issue)。此查询可解决此问题:

    OPTIONAL MATCH (f:DOES_EXIST)
    WITH COLLECT(DISTINCT f.property) AS fProps
    OPTIONAL MATCH (n:DOES_NOT_EXIST)
    RETURN COLLECT(DISTINCT n.property) AS nProps, fProps;
    

    【讨论】:

    • 由于在您的查询中 DISTINCT 不在每个 COLLECT() 语句中 --> 在(可选)匹配的情况下,并非每个集合都有不同的元素。但这就是我的目标……
    • DISTINCT 适用于同一子句中的所有项目,所以没有问题。
    • 但是“OPTIONAL MATCH (f:DOES_EXIST) OPTIONAL MATCH (n:DOES_NOT_EXIST) WITH DISTINCT f.property AS fProp, n.property AS nProp RETURN COLLECT(fProp), COLLECT( nProp)" // 和 "OPTIONAL MATCH (f:DOES_EXIST) OPTIONAL MATCH (n:DOES_NOT_EXIST) RETURN COLLECT(DISTINCT f.property), COLLECT(DISTINCT n.property)" 你同意吗?
    猜你喜欢
    • 1970-01-01
    • 2015-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-06
    相关资源
    最近更新 更多