我正在尝试将数据流的信息移动到数据库。数据流是这样的:
E_App1将数据发送到I_App1。然后,I_App1将此数据发送到I_App3。然后,I_App3将此数据发送到I_App5。 E_App2将数据发送到I_App2。然后,I_App2将此数据发送到I_App3。然后,I_App3将此数据发送到I_App5。 E_App3将数据发送到I_App2。然后,I_App2将此数据发送到I_App4。然后,I_App4将此数据发送到I_App5。 I_App5然后将此数据发送到I_App6。 E_App4将数据发送到I_App3。然后,I_App3将此数据发送到I_App5。 I_App5然后将此数据发送到I_App6。 E_App5将数据发送到I_App2。然后,I_App2将此数据发送到I_App4。然后,I_App4将此数据发送到I_App5。
我正在考虑使用名为“OF”的“发送数据”关系属性,该属性将包含正在发送的数据的名称,以便跟踪特定应用程序的流程。下图中的某些内容。是否可以查询OF值,例如“显示其OF值仅包含E_App4的所有关系”?
这是我第一次尝试使用Graph DB而我正在考虑使用它,因为关系很复杂。我不是在寻找高性能。我是否应该遵循其他方法来实现跟踪特定应用程序流程的结果?
链接到图表:http://s27.postimg.org/5qieemks3/Graph_Data_Modeling.jpg
答案 0 :(得分:1)
您的图表有点复杂,但您要问的是找到OF
类型的关系,并将节点类型E_App4
作为结束节点。开始节点没有限制。
所以这个查询应该有效:
match (startNode) -[of:OF]->(endNode:E_App4) return startNode, of, endNode;
本节假设如下:
->
并将其替换为-
。OF
的关系。请注意,名称区分大小写。该关系必须标有OF
。E_App4
。再次阅读你的问题show all relations whose OF value contains E_App4 only
我想我误解了你。你问你能检查一下这种关系的价值吗?是的你可以。这是查询:
match (startNode) -[of:OF]->(endNode) where has(of.property) and of.property = "E_App4" return of;
这假定:
property
property
的关系。如果您的关系没有此密钥,则不会计算这些关系。答案 1 :(得分:0)
谢谢Rash,这对我很有帮助。我被困在定义过滤器,但一些搜索帮助我找到如何使用*。这适用于其他可能因我而陷入困境的人:
图表在某种程度上是这样的,有很多节点和与Data属性混淆的关系只带有识别信息。
z-[send]->b
y-[send]->b
w-[send]->d
x-[send]->c
q-[send]->c
b-[send]->c-[send]->e
also c-[send]->d
每个关系的Data属性都将包含它所携带的源。因此,远离的关系将在“发送”关系的“数据”属性中以数据方式定义许多来源:“ABC,XYZ,QWR,SDF,TYOP,Zxcvb”。
//to know which all send relations have ABC part of Data property
MATCH ()-[r:send]->() WHERE r.Data =~ ".*ABC.*" RETURN r
//to know which all send relations have TYOP part of Data property
MATCH ()-[r:send]->() WHERE r.Data =~ ".*TYOP.*" RETURN r
我希望这会帮助那些仍在掌握所有这一切的人。