我知道如何在SQL中完成这项任务,但很难将我的大脑包裹在cypher中如何做到这一点。
基本上处理主数据设置,其中用户具有master_id(节点)并且需要使用现有关系属性来确定master_id,以便在master_id节点和位置节点之间创建新关系。
目前将主用户创建为包含master_id属性的节点。在主用户和品牌之间创建关系,并且该关系具有brand_user_id的属性。
我现在有另一个我需要导入的文件,其中包含brand_user级别的数据,但需要在master_id和位置节点之间创建关系。为了做到这一点,因为文件不包含master_id属性,我试图使用新文件根据与品牌的现有关系查找master_id,然后使用该master_id创建与该位置的新关系。
有这种关系:
(m:Master{master_id:12345})-[:IS_BRAND_USER{brand_user_id:9876}]->(b:Brand{name:"Acme"})
拥有此文件:
brand_user_id,location_id
9876,6
需要这种关系:
(m:Master{master_id:12345})-[:HAS_LOCATION]->(l:Location{id:6})
我的方法:
LOAD CSV WITH HEADERS FROM "file:///brand_user_ids.csv" as buid
MATCH (m:Master)-[r:IS_BRAND_USER{brand_user_id:buid.id}]->(b:Brand)
WITH m, buid.location_id AS location_id
MATCH (l:Location {id: location_id})
CREATE (m)-[:HAS_LOCATION {source: 'abcdef'}]->(l)
似乎运行了很长时间,并且在一小时后没有看到任何真正的进展,所以我想知道这是否从根本上是正确的方法,或者如果我无意中创建了一些可怕的交叉连接等效。
答案 0 :(得分:1)
问题是你试图在关系中输入图表。而且这总是需要大量的扫描图表"。
现在,我不是您网域的专家,但您可能在这里缺少一种节点...... BrandUser。可能有几个原因:
然而,最重要的原因是......如果您要一直在 brand_user_id 上输入图表(并从可能是这种情况的位置示例来判断)。 ..你有理由把它变成一个节点。
所以......它确实是一个建模问题。
希望这有帮助。
此致 汤姆