繁体   English   中英

Neo4j - 理解密码查询

[英]Neo4j - understanding cypher querying

我对 Neo4j 和 Cypher 很陌生。 我编写了以下查询:

MATCH (tp: TPPRODUCT_VERSION {TPPRODUCTCODE: "Z1115"})
<-[:IS_TPBOMPARENT_OF]-(pv: PRODUCT_VERSION)
<-[:IS_BOMPARENT_OF*..]-(parent: PRODUCT_VERSION)
RETURN parent, pv, tp

结果如下: http : //postimg.org/image/ve76qy977/

实际上,我希望获得与 Z1115 及其父级具有 [IS_TPBOMPARENT_OF] 关系的所有 Product_Versions,无论它们是否有。

但相反,我只得到了这些 PRODUCT_VERSIONs,它们的父母似乎都没有被忽略。

所以你可能想使用OPTIONAL MATCH

您的查询强制 neo4j 匹配某个模式。 如果模式不存在,那么您将无法取回匹配的数据。 在这种情况下,您需要所有PRODUCT_VERSION ,不仅是有父母的,还有没有父母的。

所以试试这个查询:

MATCH (tp: TPPRODUCT_VERSION {TPPRODUCTCODE: "Z1115"})<-[:IS_TPBOMPARENT_OF]-(pv: PRODUCT_VERSION)
OPTIONAL MATCH (pv)<-[:IS_BOMPARENT_OF*..]-(parent: PRODUCT_VERSION)
RETURN parent, pv, tp

这应该返回tp和所有pv对象。 但是它也会尝试从pv对象进一步匹配到parent对象,如果它们存在则返回它们。 但是如果它们不存在,你仍然应该得到没有parent pv

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM