繁体   English   中英

neo4j中节点之间的循环关系

[英]cyclic relationships between nodes in neo4j

我正在使用neo4j和python(使用py2neo),我需要在数据库中放置类似http://i.imgur.com/1rLOdiq.png的内容。 目前,我有这个http://i.imgur.com/wxsY6YO.png这个密码查询

grafoNeo4j.cypher.execute("merge (n1:k_mer {name : '"+src.k_1_mer+"'}) 
merge (n2:k_mer {name : '"+dst.k_1_mer+"'}) merge (n1)-[:solapa]-(n2)")

哪里:

  • grafoNeo4j是我在数据库中的图形。
  • src.k_1_mer和dst.k_1_mer是节点名称

我的想法是获取第一个图像的图形,并带有数据库中相应的循环关系。 希望这足够清楚。 谢谢你的时间。

所以,这很简单。

这是对上面图片的查询:

CREATE (long_:Node {name: "long_"})
CREATE (ong_t:Node {name: "ong_t"})
CREATE (ng_ti:Node {name: "ng_ti"})
CREATE (g_tim:Node {name: "g_tim"})
CREATE (_time:Node {name: "_time"})
CREATE (ong_l:Node {name: "ong_l"})
CREATE (ng_lo:Node {name: "ng_lo"})
CREATE (g_lon:Node {name: "g_lon"})
CREATE (_long:Node {name: "_long"})
CREATE (a_lon:Node {name: "a_lon"})

CREATE (_long)-[:solapa]->(long_)
CREATE (_long)-[:solapa]->(long_)
CREATE (_long)-[:solapa]->(long_)
CREATE (a_lon)-[:solapa]->(_long)
CREATE (long_)-[:solapa]->(ong_l)
CREATE (long_)-[:solapa]->(ong_l)
CREATE (long_)-[:solapa]->(ong_t)
CREATE (ong_t)-[:solapa]->(ng_ti)
CREATE (ng_ti)-[:solapa]->(g_tim)
CREATE (g_tim)-[:solapa]->(_time)
CREATE (ong_l)-[:solapa]->(ng_lo)
CREATE (ong_l)-[:solapa]->(ng_lo)
CREATE (ng_lo)-[:solapa]->(g_lon)
CREATE (ng_lo)-[:solapa]->(g_lon)
CREATE (g_lon)-[:solapa]->(_long)
CREATE (g_lon)-[:solapa]->(_long)

您可以将其复制粘贴到Neo4j浏览器中进行验证。

结果:

结果

注意:请谨慎使用MERGE语句,不要在不需要时过度使用它们。

在2个节点之间具有相同关系的相同副本会浪费资源。 您可以改为在单个关系上维护count属性。 MERGE子句的可选ON CREATEON MATCH子句使此操作非常容易。

例如:

MERGE (n1:k_mer {name : 'a'}) 
MERGE (n2:k_mer {name : 'b'})
MERGE (n1)-[r:solapa]-(n2)
ON CREATE SET r.cnt = 1
ON MATCH SET r.cnt = r.cnt + 1;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM