Neo4j Cypher-如何在子节点上查询“继承的”关系?

时间:2019-03-23 19:27:01

标签: neo4j neo4j-cql

我想使用Cypher查询所有产品的有效规格,但这些规格是在产品的不同父级定义的。

我有一个数据模型,代表一个具有C1,C2,C3,...和最低级别的产品P的产品分类树。为简化产品规格的维护和数据输入,产品规格的有效性在分类级别定义。产品“继承”对其所有父类别有效的规范,直到分类树的根为止。

(简化的)数据模型如图所示。在这种情况下,将为分类级别C1,C2和C3定义产品规格。产品已连接到最低分类级别C3。 我的目标是根据产品P与分类级别C1,C2和C3的关系来查询对产品P有效的所有规格。

graph model

我有以下问题:

  1. 使用单个Cypher查询是否有可能?
  2. 大型数据库中最好的查询策略是什么?使用查询?为产品的所有有效规格创建真实关系,而不是查询“继承的”规格?
  3. 更改数据模型?

其他提示?

谢谢

1 个答案:

答案 0 :(得分:1)

您可以通过匹配长度可变的样式来找到产品的所有规格。

假设您有一个参数productId,则应使用类似的内容

MATCH (p:PRODUCT {productId:$productiId)-[:BELONGS_TO*]->(c:Category)<-[:VALID_FOR]-(s:Specification)
RETURN s

检索相关规范。

由于您似乎正在处理材料明细表,因此您可能需要查看以下内容:

通过将复杂的产品规格分成“原子” https://www.slideshare.net/neo4j/graphtour-neo4j-murrelektronik

进行管理

有关如何跟踪BOM表版本的示例: https://www.youtube.com/watch?v=7iMraBHtTqE

披露:我是Graphileon小组的成员,并参与幻灯片和视频中显示的内容。