gpt4 book ai didi

neo4j - 使用 Cypher 创建与现有节点的多个关系

转载 作者:行者123 更新时间:2023-12-02 07:26:33 25 4
gpt4 key购买 nike

如果之前有人问过这个问题,我很抱歉。它似乎比它应该的更基本。

我正在尝试为我的雇主评估 Neo4j。我没有参与设置 eval 环境,它似乎很小。我只有基于网络的浏览器和密码来完成任何事情。我什至无法将文件加载到服务器以通过 CSV 加载。

而且我在加载测试数据时遇到了很多麻烦。我选择使用数据仓库元数据作为我的主题并添加 :table 节点,然后添加 :model 节点(对表 [APPEAR_ON] 的图表进行编目)。我应该指出...... APPEAR_ON 关系源自 RDMS 中的多对多关系:一个模型拥有许多表;一个表可以出现在多个模型上。所以我认为我无法与节点同时加载关系。除了加载所有节点然后加载所有关系之外,我不知道还能尝试什么。评论?

  • 我可以通过拉动来加载 :table 节点和 :model 节点
    将许多 CREATE/MERGE 语句放在单独的行上
    将它们粘贴到浏览器中的密码查询工具中。
  • 创建节点后,我还为这些标签创建了索引/唯一性约束。 (我为每个加载了 ID 属性。)
  • 但我无法弄清楚如何使用多语句方法创建关系。
    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 语句。

    非常感谢您的想法!

    最佳答案

    对于格式化查询,请选中 cypher refcard 的右上角框.您的查询大多是正确的,但我认为您尝试做的太多了。如果没有 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);

    但是您要“重新匹配”同一模型两次。所以你也可以这样做:
    MATCH  (t1:table { tid: "T0525" }), 
    (m:model {mid: "M001"}),
    (t2:table { tid: "T0526 })
    CREATE (t1)-[R00864:APPEARS_IN]->(m),
    (t2)-[R00865:APPEARS_IN]->(m);

    请注意,我消除了 WHERE通过在匹配属性中添加匹配条件,然后我使用
    一个逗号创建两个独立的 CREATE没有单独查询的语句,就像您可以执行相同的操作来执行多个匹配。

    关于neo4j - 使用 Cypher 创建与现有节点的多个关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27924178/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com