我已经有节点作为"项目"在我的数据库中。我还有CSV标签。 CSV看起来像这样:
|name|
|Information1|
|Information2|
|...|
我想将它们放在一起,这样一个特定的项目就会在CSV中拥有关系" belongs_to"的所有信息。 结果应如下所示:
Information1 - belongs_to -> Project1
Information2 - belongs_to -> Project1
我该怎么做?我尝试了不同的东西,但没有什么是对的。
我以为我可以首先加载CSV,然后得到如下关系:
USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM "file:C:/.../projects.csv" AS row
CREATE (:AddInformation {name: row.name});
...
MATCH (p:PROJECT { id:1 })
WITH range(1,4) AS RANGE, p
FOREACH (r IN RANGE |
MERGE (add:AddInformation { id:r })-[rel:belongs_to]->(p))
这样可行,但在这种情况下,只有新的AddInformation,而不是我想要的那个。
再次提出我的问题:我如何将一个项目(与关系)放在一起来自特定CSV的信息? (在CSV中通过ID识别AddInformation或添加信息是否有助于它们与特定项目相匹配?)
最好的问候,Finfan
答案 0 :(得分:0)
FOREACH对此并不合适。 现在我为AddInformation使用了第二个属性。
CSV现在看起来像这样:
|name |property|
|Information1|... |
|Information2|... |
|... |... |
首先我加载这个CSV,然后我使用这个命令:
MATCH (p:Project), (add:AddInformation) WHERE id(p)=8 AND HAS (add.property)
MERGE (add)-[:belongs_to]->(p)
之后我删除了这个属性,一切都很好。
MATCH (m {property:"Insert"}) REMOVE m.property RETURN m