Neo4j:Link 一个节点的不同节点
Neo4j: Link Different Nodes to the one node
假设您有以下 4 个节点:
第 1 组:
(行为:"Event Log",时间戳:3461000)
(行动:"Uptime Report",时间戳:3461000)
第 2 组:
(行为:"Event Log",时间戳:149100)
(行动:"Uptime Report",时间戳:149100)
我想弄清楚如何将每组节点映射到一个节点。我尝试了以下 Cypher,但所有 4 个节点都只映射到一个节点,(a) 而不是创建两个 (a) 节点并分别映射 2 个集合。是否需要有一个条件来查找 (act)
节点的匹配时间戳?然后,如果时间戳确实匹配,那么 link 那些节点到 (a)?任何帮助将不胜感激。
MATCH (seconds)<-[:AT_TIME]-(act)--(obj)
WHERE reqObj.filename IN ["6013", "6005"]
MERGE (a:Abs{name: 'SigEvent'})
CREATE (reqAct)-[:LINK]->(a)
因此,如果我理解正确的话,您需要一个 :Abs 节点用于 act 节点中的每个不同时间戳。为此,我们需要按时间戳聚合行为节点(因此每个不同的时间戳只会得到一行),然后创建 :Abs 节点,然后执行 FOREACH 以创建与新节点的关系。
MATCH (act)--(obj)
WHERE obj.filename IN ["6013", "6005"]
WITH act.timestamp as timestamp, collect(DISTINCT act) as acts
CREATE (a:Abs{name: 'SigEvent'}) // created per row, so per distinct timestamp
FOREACH (act in acts | CREATE (act)-[:LINK]->(a))
我删除了 seconds
的匹配模式部分,因为它看起来不像你在使用它。
虽然这个查询有一个主要问题。此匹配不能使用任何索引查找,因为您没有在匹配模式中使用标签,因此这是在进行所有节点扫描,随着图形的增长,这将导致糟糕的性能。您至少需要在其中一个上贴上标签。您似乎打算在 obj.filename
上进行索引查找,因此请在 MATCH 模式中将适当的标签添加到 obj
,以便可以使用您的索引(如果您已创建)。
假设您有以下 4 个节点:
第 1 组: (行为:"Event Log",时间戳:3461000) (行动:"Uptime Report",时间戳:3461000)
第 2 组: (行为:"Event Log",时间戳:149100) (行动:"Uptime Report",时间戳:149100)
我想弄清楚如何将每组节点映射到一个节点。我尝试了以下 Cypher,但所有 4 个节点都只映射到一个节点,(a) 而不是创建两个 (a) 节点并分别映射 2 个集合。是否需要有一个条件来查找 (act)
节点的匹配时间戳?然后,如果时间戳确实匹配,那么 link 那些节点到 (a)?任何帮助将不胜感激。
MATCH (seconds)<-[:AT_TIME]-(act)--(obj)
WHERE reqObj.filename IN ["6013", "6005"]
MERGE (a:Abs{name: 'SigEvent'})
CREATE (reqAct)-[:LINK]->(a)
因此,如果我理解正确的话,您需要一个 :Abs 节点用于 act 节点中的每个不同时间戳。为此,我们需要按时间戳聚合行为节点(因此每个不同的时间戳只会得到一行),然后创建 :Abs 节点,然后执行 FOREACH 以创建与新节点的关系。
MATCH (act)--(obj)
WHERE obj.filename IN ["6013", "6005"]
WITH act.timestamp as timestamp, collect(DISTINCT act) as acts
CREATE (a:Abs{name: 'SigEvent'}) // created per row, so per distinct timestamp
FOREACH (act in acts | CREATE (act)-[:LINK]->(a))
我删除了 seconds
的匹配模式部分,因为它看起来不像你在使用它。
虽然这个查询有一个主要问题。此匹配不能使用任何索引查找,因为您没有在匹配模式中使用标签,因此这是在进行所有节点扫描,随着图形的增长,这将导致糟糕的性能。您至少需要在其中一个上贴上标签。您似乎打算在 obj.filename
上进行索引查找,因此请在 MATCH 模式中将适当的标签添加到 obj
,以便可以使用您的索引(如果您已创建)。