Neo4j中的多个可选匹配2.2.3错误

时间:2015-08-11 17:10:54

标签: neo4j match cypher optional

多个OPTIONAL MATCH在Neo4j 2.2.3中返回以下错误。我正在使用Cypher 2.2解析器。 **

  

" org.neo4j.rest.graphdb.RestResultException:null at   的NullPointerException&#34 ;.相同的查询在Neo4j 2.1.7中完美运行。

**

 match (user:user)-[k:SUBSCRIBED]->(package) 
 where package.startDate < 1439268888365 and package.endDate > 1439268888365 
 with package,user optional match (package)-[j:HAS]->(products) 
 with package,j,products,user optional match (package)-[j:HAS]-(otherpackages) 
 return distinct package,products,user,otherpackages

有任何解决这个的指针吗?

2 个答案:

答案 0 :(得分:0)

根据Neo4j documentation可选匹配可以返回null,要知道返回null的位置,只需尝试查询的每个段,并将每个“with”替换为返回。

您还可以使用Case expression管理空值返回,并将其替换为默认值(如0)。

你应该考虑升级到2.2.4,这是一个关键的更新,它可能只是通过应用它来修复你的问题。

答案 1 :(得分:0)

试试这个,

&#13;
&#13;
match (user:user)-[k:SUBSCRIBED]->(package:package) 
where package.startDate < 1439268888365 and package.endDate > 1439268888365 
with package,user 
optional match (package)-[j:HAS]->(products:products) with package,j,products,user 
optional match (package)-[j:HAS]-(otherpackages) with package,j,products,user,otherpackages
return 
{
package:[{package:package}],
products:[{products:products}],
user:[{user:user}],
otherpackages:[{otherpackages:otherpackages}]
}
&#13;
&#13;
&#13;

如果你想要使用不同的手段

收集(包)