[英]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.