在neo4j中加载csv时,不要创建所有关系

时间:2018-08-18 00:07:01

标签: neo4j cypher-3.1

对所有人都好,请帮助我解决这个问题:D

当我执行查询时:

USING PERIODIC COMMIT LOAD CSV WITH HEADERS FROM "file:///Create_all.csv" AS row
MATCH(x:Category{uuid:row.uuid_category}) 
MERGE (t:Subscriber{name:row.name_subscriber, uuid:row.uuid_subscriber})
CREATE (n:Product{name: row.name_product, uuid: row.uuid_product}),
(Price:AttributeValue{name:'Price', value: row.price_product}),
(Stock:AttributeValue{name:'Stock', value: row.stock_product }),
(Style:AttributeValue{name:'Style', value: 'Pop Art'}),
(Subject:AttributeValue{name:'Subject', value: 'Portrait'}),
(Originality:AttributeValue{name:'Originality', value: 'Reproduction'}),
(Region:AttributeValue{name:'Region', value: 'Japan'}),
(Price)-[:IS_ATTRIBUTEVALUE_OF]->(n),
(Stock)-[:IS_ATTRIBUTEVALUE_OF]->(n),
(Style)-[:IS_ATTRIBUTEVALUE_OF]->(n),
(Subject)-[:IS_ATTRIBUTEVALUE_OF]->(n),
(Originality)-[:IS_ATTRIBUTEVALUE_OF]->(n),
(Region)-[:IS_ATTRIBUTEVALUE_OF]->(n)
  WITH (n),(t),(x)     

create  (n)-[:OF_CATEGORY]->(x)
create (t)-[:SELLS]->(n)

csv的格式如下:

我有4个类别,30个产品和10个订阅者创建了我:

  

添加了164个标签,创建了164个节点,设置了328个属性,创建了184个   关系,在254毫秒后完成。

我用以下方法验证结果

  

MATCH p =()-[r:OF_CATEGORY]->()返回计数(r)

已创建23个关系,但是其余7个关系未创建。

请指导我创建该查询的所有关系,在这种情况下,将是30个具有类别的关系产品

1 个答案:

答案 0 :(得分:0)

关键部分是MATCH(x:Category{uuid:row.uuid_category})

如果该行匹配失败,则该行将被清除,并且该行的其他任何操作都将不会执行。

由于您的输入内容包含4个相同类别的内容(我们分别称为1,2,3和4),因此重复了7次(到目前为止总共28行),然后其中两个重复出现一次(2如果两次都成功,则总共30行),如果您的某些匹配失败,则有意义:带有某些uuid_category属性的:Category节点实际上不在图中显示。

在这些uuid(1、2、3和4)中,最后仅出现1和2(因此,这两个uuid跨越8行出现,而uuid 3和4则出现7次)。如果uuid 3或uuid 4在图中没有对应的节点,这将是有道理的。这将使我们得到1 * 7 + 2 * 8 = 23,这是您的查询正在创建的关系数。

所以uuid_category没有以3或4结尾的:Category节点。

对照数据检查图表以确认。