使用 neo4j and/or python 在节点的路径(深度)中查找步骤
Find steps in path (depth) for a node using neo4j and/or python
我有下图
这些关系中的每一个都是“USES_COMPONENT
”
在对 neo4j 密码结果进行规范化后,我的结构类似于
{
'1': {
'label': 'Product',
'properties': {...},
'type': 'VERTEX'
},
'2': {
'label': 'Component',
'properties': {...},
'type': 'VERTEX'
},
'3': {
'label': 'USES_COMPONENT',
'properties': {...},
'type': 'EDGE',
'direction': 'OUT',
'from': '1',
'to': '2'
}
}
最终描述了整个图(与原始密码响应非常相似)
我当前的密码查询是:(Froot Loops的uuid是a1
。我分配了这个。)
MATCH p = (pr:Product)-[:USES_COMPONENT*]->()
WHERE pr.meta_uuid = 'a1'
RETURN p
我需要做的是找出每个组件离根(Froot Loops)有多少步。
因此 Corn Flour Blend
将 1
步远,而 Whole Grain Yellow Corn Flour
将 2
步远。
我对密码实现或 python 实现都很满意。或者,两者结合。
一些注意事项:
- 我完全控制图形数据及其标准化方式(上图)。我想让它尽可能接近这个,但我可以调整它
- 性能很重要,但是 none 这些图表会大得离谱。如果(总计)任何产品有超过 200 个组件(在任何深度),我会感到惊讶
- 我很乐意包括第三方库,如果有人知道的话
- 我只担心
USES_COMPONENT
关系,那永远不会循环。无论您沿着 USES_COMPONENT
路径 走多远,它永远不会遇到 Froot Loops。
感谢大家的帮助。我什至不完全确定 google 是什么,所以如果我遗漏了一些明显的东西,link 将不胜感激。
因为如您在 中所述,距根节点距离足够的节点,此查询应该有效:
MATCH p = (pr:Product)-[r:USES_COMPONENT*]->(n)
WHERE pr.meta_uuid = 'a1'
RETURN n, size(r)
此查询使用 size() 函数获取 pr
(根)和每个 n
节点之间的 r
关系的数量。
我有下图
这些关系中的每一个都是“USES_COMPONENT
”
在对 neo4j 密码结果进行规范化后,我的结构类似于
{
'1': {
'label': 'Product',
'properties': {...},
'type': 'VERTEX'
},
'2': {
'label': 'Component',
'properties': {...},
'type': 'VERTEX'
},
'3': {
'label': 'USES_COMPONENT',
'properties': {...},
'type': 'EDGE',
'direction': 'OUT',
'from': '1',
'to': '2'
}
}
最终描述了整个图(与原始密码响应非常相似)
我当前的密码查询是:(Froot Loops的uuid是a1
。我分配了这个。)
MATCH p = (pr:Product)-[:USES_COMPONENT*]->()
WHERE pr.meta_uuid = 'a1'
RETURN p
我需要做的是找出每个组件离根(Froot Loops)有多少步。
因此 Corn Flour Blend
将 1
步远,而 Whole Grain Yellow Corn Flour
将 2
步远。
我对密码实现或 python 实现都很满意。或者,两者结合。
一些注意事项:
- 我完全控制图形数据及其标准化方式(上图)。我想让它尽可能接近这个,但我可以调整它
- 性能很重要,但是 none 这些图表会大得离谱。如果(总计)任何产品有超过 200 个组件(在任何深度),我会感到惊讶
- 我很乐意包括第三方库,如果有人知道的话
- 我只担心
USES_COMPONENT
关系,那永远不会循环。无论您沿着USES_COMPONENT
路径 走多远,它永远不会遇到 Froot Loops。
感谢大家的帮助。我什至不完全确定 google 是什么,所以如果我遗漏了一些明显的东西,link 将不胜感激。
因为如您在
MATCH p = (pr:Product)-[r:USES_COMPONENT*]->(n)
WHERE pr.meta_uuid = 'a1'
RETURN n, size(r)
此查询使用 size() 函数获取 pr
(根)和每个 n
节点之间的 r
关系的数量。