2
新しいCypher 3.1のhead()関数を使用していて、OPTIONAL MATCHコマンドの後にRETURN文で使用すると、異常な(間違った)動作が見られます。オプションのマッチで一致しないラベルがhead()パースペクティブからすでに収集されたデータに悪影響を及ぼし、RETURNステートメントの残りの部分について期待どおりに動作する値のように見えます。私たちが何をやっているのか、これがNeo4jエンジンの予期せぬ結果ですか?ここで新しいCypher 3.1のhead()関数の問題
MATCH (productLine:ProductLine)-[:CHILD]->(product:Product)-[:CHILD]->(application:Application)-[:MATCHES]->(:Rule {name: 'Tier-0 Application'})
WITH productLine,
application
OPTIONAL MATCH (application)-[mr:MATCHES]->(:Rule {name: 'Multiple Regions'})
WITH application,
mr,
productLine
RETURN
productLine.name AS ProductLine,
head([(productLine)-[:PRODUCT_MANAGER]->(person:Person) | person.name]) AS ProductLineManager,
mr.numServers,
application.id AS AppId
は、私たちが見たものです。これはオプションMATCHによって生成された行があるパターンの理解に関連するバグ、ない頭()関数で、あるよう
ProductLine ProductLineManager mr.numServers AppId
PL1 null null IN000041
PL2 LAST,FIRST 6 AP010024
PL3 LAST,FIRST 6 AP107752
PL4 LAST,FIRST 11 AP106560
PL5 null null AP012190
質問のいくつか:1. 3.0で試しましたか? ['head()'](https://neo4j.com/docs/developer-manual/3.0/cypher/#functions-head)関数も3.0で提供されました。 2.サンプルデータセットを提供して、クエリを少し簡略化していただけますか? –