是否可以仅使用关系 属性 的一部分值来查询 neo4j 中的图形?

Is it possible to query the graph in neo4j with just a part of the value of a relation's property?

我正在尝试将数据流的信息移动到数据库。数据流是这样的:

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。

我正在考虑在 "sends data" 关系中创建一个名为 "OF" 的 属性,它将包含正在发送的数据的名称,以便我可以跟踪特定的流程应用。下图中的一些东西。是否可以查询 OF 值,例如 "show all relations whose OF value contains E_App4 only"?

这是我第一次尝试 Graph DB,我正在考虑使用它,因为关系很复杂。我不是在这里寻找高性能。有没有我应该遵循的其他方法来实现跟踪特定应用程序流的结果?

Link上图:http://s27.postimg.org/5qieemks3/Graph_Data_Modeling.jpg

你的图表有点复杂,但你所要求的只是找到那些类型为 OF 且节点类型为 E_App4 作为结束节点的关系。起始节点无限制

所以这个查询应该有效:

match (startNode) -[of:OF]->(endNode:E_App4) return startNode, of, endNode;

本课程假设如下:

  1. 关系将从开始节点定向到结束节点。因此,来自 E_App4 作为起始节点的任何关系都不会被计算在内。如果您还想计算这些,请删除 -> 并将其替换为 -.
  2. 起始节点可以是任何东西。
  3. 仅考虑类型 OF 的关系。请注意,名称区分大小写。关系必须用 OF.
  4. 标记
  5. 结束节点必须标记为 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;

假设:

  1. 关系中定义的属性具有键 property
  2. 这将只检查具有键 property 的关系。如果你的关系没有这个键,那些关系将不会被计算在内。

谢谢 Rash,它帮助了我。我在定义过滤器时陷入困境,但一些搜索帮助我找到了如何使用 *.这是为其他可能像我一样卡住的人准备的:

该图有点像这样,有很多节点和与数据的混淆关系 属性 只携带识别信息。

z-[send]->b
y-[send]->b
w-[send]->d
x-[send]->c
q-[send]->c
b-[send]->c-[send]->e
also c-[send]->d

每个关系的数据 属性 都将具有它携带的源。因此,距离很远的关系将在 "send" 关系的 "Data" 属性 中以 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

我希望这对那些仍在掌握这一切的人有所帮助。