如果以前曾问过这个问题我很抱歉.它似乎比应该更基本.
我正在为我的雇主评估Neo4j.我没有参与设置eval环境,它看起来很小.我只有基于网络的浏览器和密码才能完成任何工作.我甚至无法将文件加载到服务器以便通过CSV加载.
我在加载测试数据时遇到了很多麻烦.我选择使用数据仓库元数据作为我的主题并添加:表节点然后:模型节点(对表[APPEAR_ON]的图表进行编目).我应该指出...... APPEAR_ON关系源自RDMS中的多对多关系:模型包含许多表; 表格可以出现在多个模型上.所以我认为我不能在节点的同时加载关系.除了加载所有节点然后加载所有关系之外,我不知道还有什么可以尝试.评论?
MATCH (t:table),(m:model) WHERE t.tid = "T0525" AND m.mid = "M001" CREATE (t)-[R00864:APPEARS_IN]->(m)
MATCH (t:table),(m:model) WHERE t.tid = "T0526" AND m.mid = "M001" CREATE (t)-[R00865:APPEARS_IN]->(m)
不幸的是,我只能通过在语句末尾包含RETURN来一次完成这项工作.当我发送多个语句时,我收到一个错误,说我需要在第一个语句的CREATE和第二个语句的MATCH之间包含一个WITH语句.
非常感谢您的想法!
要格式化查询,请检查密码重新卡的右上方框.你的查询大多是正确的,但我想你做的太多了.没有a,你不能做那样的多个匹配/创建块with.
因此,重写此方法的一种方法是将其作为两个查询:
MATCH (t:table),(m:model) WHERE t.tid = "T0525" AND m.mid = "M001" CREATE (t)-[R00864:APPEARS_IN]->(m);
MATCH (t:table),(m:model) WHERE t.tid = "T0526" AND m.mid = "M001" CREATE (t)-[R00865:APPEARS_IN]->(m);
Run Code Online (Sandbox Code Playgroud)
但是你要两次"重新匹配"同一个模型.所以你也可以这样做:
MATCH (t1:table { tid: "T0525" }),
(m:model {mid: "M001"}),
(t2:table { tid: "T0526 })
CREATE (t1)-[R00864:APPEARS_IN]->(m),
(t2)-[R00865:APPEARS_IN]->(m);
Run Code Online (Sandbox Code Playgroud)
请注意,我WHERE通过在匹配属性中添加匹配条件来消除,然后我使用逗号创建两个单独的CREATE语句而没有单独的查询,就像您可以执行相同的操作来执行多个匹配一样.
| 归档时间: |
|
| 查看次数: |
10224 次 |
| 最近记录: |