我使用以下cypher查询
在图表中创建了两组节点制药集团
CREATE ( p1:pharma { name: " Magnesium ", id: " 12 " } )
CREATE ( p2:pharma { name: " Hyoscine Butylbromide ", id: " 22 " } )
CREATE ( p3:pharma { name: " Propantheline Bromide ", id: " 23 ", } );
ind group
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'});
就像关系数据库表一样,现在我想定义这两组节点之间的关系..
关系如=药房中的节点,ID为12,关系名称为HAS_IND,节点为ind,ID为1?
像这样的地方
MATCH (a:pharma),(b:ind)
WHERE a.id = '12' AND b.id = '1'
CREATE (a)-[:has_ind]->(b);
我也试过这些
MATCH (a:pharmaDrug),(b:indication)
WHERE a.name = 'Magnesium Carbonate' AND b.name = 'Dyspepsia'
CREATE (a)-[:has_indication]->(b);
但是两者都在控制台中提供在530毫秒内返回0行
请帮我找到正确的密码查询。提前谢谢。
=============================================== =========================
我的更改如下
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_indication]->(b);
这会导致零行没有输出?
答案 0 :(得分:4)
这是因为您创建商品的方式,如果您查看您的“制药”代码:
CREATE ( p1:pharma { name: " Magnesium ", id: " 12 " } )
要与此相匹配,您需要执行以下操作:
MATCH (a:pharma)
WHERE a.id = ' 12 '
RETURN a
我在'12'附近添加了额外的空格以使其匹配。因此,您的查询将显示为:
MATCH (a:pharma),(b:ind)
WHERE a.id = ' 12 ' AND b.id = '1'
CREATE (a)-[:has_indication]->(b)
现在,它会让它发挥作用 - 但是如果id
总是一个整数,我可能会将你的创建更改为:
CREATE ( p1:pharma { name: "Magnesium", id: 12 } )
CREATE ( p2:pharma { name: "Hyoscine Butylbromide", id: 22 } )
CREATE ( p3:pharma { name: "Propantheline Bromide", id: 23 } );
并 SUPER 小心使用"
(或'
)字符,在您的原始广告中,您也为名称添加了额外的空格(其中这就是你的第二个查询不起作用的原因)
修改强>
好的,这是一组完整的数据,我已经编辑了你的两个创建语句来获得这个:
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})
基本上我删除了'
个字符,并使用了整数id(和pdfk)。
这个MATCH
是:
MATCH (a:pharma),(b:ind)
WHERE a.id = 12 AND b.id = 1
CREATE (a)-[:has_ind]->(b)
要检查它是否有效(除了你得到的消息):
MATCH (p:pharma),(i:ind) RETURN p,i
你会看到一个链接到另一个。