在Neo4j中使用label及其属性值创建多个关系的cypher查询是什么?

时间:2014-01-14 12:03:01

标签: neo4j cypher node-neo4j

我在neo4j(2V)

中有两组不同的标签
CREATE ( p1:pharma { name: "Magnesium", id: 12 } ) 
CREATE ( p2:pharma { name: "Hyoscine Butylbromide", id: 22 } ) 
CREATE ( p3:pharma { name: "Propantheline Bromide", id: 23 } );

CREATE ( i1:ind { id: 1, name: 'Dyspepsia',  pdfk: '12'}) 
CREATE ( i2:ind { id: 5, name: 'Symptomic relief of intestinal disorder', pdfk: '22'}) 
CREATE ( i3:ind { id: 6, name: 'Symptomic relief of disorder', pdfk: '22'}) 
CREATE ( i4:ind { id: 7, name: 'Bowel colic', review: 'False', pdfk: '23'});

我的关系代码对于来自两组标签

的单个节点看起来像这些
MATCH (a:pharma),(b:ind)
WHERE a.id = 12 AND b.id = 1
CREATE (a)-[:has_ind]->(b)

我想知道如何将其写为其他节点的批量查询?提前谢谢。


我在BEGIN COMMIT中使用带有上面代码的import.txt文件,然后我使用以下代码从命令提示符创建数据库

neo4jshell -path C:\progra~1\neo4j-community-2.0.0\data\drug11.db -config C:\progra~1\neo4j-community-2.0.0\conf\neo4j.properties -file C:\Users\admin\Downloads\import.txt

节点将被创建但不是关系?

2 个答案:

答案 0 :(得分:1)

Create ( p1:pharma { name: "Magnesium", id: 12 } )-[:has_ind]->( i1:ind { id: 1, name: 'Dyspepsia',  pdfk: '12'})
我觉得应该工作吗?

答案 1 :(得分:0)

您可以一次发出一个查询(您使用的是什么API?)

MATCH (a:pharma {id:12}),(b:ind {id:1})
CREATE (a)-[:has_ind]->(b)

使用参数会更快:

MATCH (a:pharma {id:{pharma_id}}),(b:ind {id:{ind_id}})
CREATE (a)-[:has_ind]->(b)

然后使用params:{"pharma_id":12,"ind_id":1}等。