我有一个XML文件,我尝试使用Neo4j
进行可视化。它看起来像这样:
<Organism>
<Name>Bacillus halodurans C-125</Name>
<Enzyme>M.BhaII</Enzyme>
<Motif>GGCC</Motif>
<Enzyme>M1.BhaI</Enzyme>
<Motif>GCATC</Motif>
<Enzyme>M2.BhaI</Enzyme>
<Motif>GCATC</Motif>
</Organism>
我在cypher中的创建查询看起来像这样(下面),它产生了所需的节点和我想要的边缘:
CREATE (halodurans:Organism { name: "Bacillus halodurans C-125" })
CREATE (halodurans_e1:Enzyme { name: "M.BhaII" })
CREATE (halodurans_m1:Motif { name: "GGCC" })
CREATE (halodurans_e2:Enzyme { name: "M1.BhaI" })
CREATE (halodurans_m2:Motif { name: "GCATC" })
CREATE (halodurans_e3:Enzyme { name: "M2.BhaI" })
CREATE UNIQUE (halodurans)-[:HAS_ENZYME]->(halodurans_e1)
CREATE UNIQUE (halodurans)-[:HAS_ENZYME]->(halodurans_e2)
CREATE UNIQUE (halodurans)-[:HAS_ENZYME]->(halodurans_e3)
CREATE UNIQUE (halodurans_e1)-[:HAS_MOTIF]->(halodurans_m1)
CREATE UNIQUE (halodurans_e2)-[:HAS_MOTIF]->(halodurans_m2)
CREATE UNIQUE (halodurans_e3)-[:HAS_MOTIF]->(halodurans_m2)
但是,在某些情况下,具有不同Organism
的其他enzyme
的{{1}}已存在于数据库中。 Id希望motif
连接到存在它的enzyme
节点,而不是创建新节点。因为我刚开始在neo4j(大约6小时前),我不知道该怎么做。任何帮助将不胜感激。
答案 0 :(得分:1)
只需用MERGE替换CREATE即可。如果没有匹配给定的属性,这将插入节点,如果匹配,则插入节点。
这里是nice quick overview Cypher基础知识。