【问题标题】:Neo4j query to bring two entities and how they are connectedNeo4j 查询带来两个实体以及它们如何连接
【发布时间】:2019-12-16 21:07:58
【问题描述】:

我有一个名为 entity 的 Neo4j 节点,它可以连接到其他实体。我想编写一个密码查询,在其中指定一个实体 id 列表,它将我带回这些实体以及它们是如何连接的。

例如:

因此,如果我指定实体 A 和实体 B 的 ID,它应该为我带来所有其他实体,包括相互关系 (c-d) 和互连实体 E。

有人可以帮我解决密码查询吗?

【问题讨论】:

    标签: neo4j cypher


    【解决方案1】:

    假设idList 是一个输入参数,它为您希望在结果中看到的实体定义了一个neo4j id 列表,这应该返回您需要的内容:

    MATCH (a:Entity)-[r:RELATED_TO]->(b:Entity)
    WHERE id(a) IN $idList AND id(b) IN $idList
    RETURN a, r, b
    

    请注意,孤立的节点不会显示在结果中。如果你也想包含这些,你可以这样做:

    MATCH (a:Entity),(b:Entity)
    WHERE id(a) IN $idList AND id(b) IN $idList
    OPTIONAL MATCH (a)-[r:RELATED_TO]->(b)
    RETURN a, r, b
    

    【讨论】:

    • 谢谢。不幸的是,第一个没有返回任何记录,第二个抱怨“这个查询在断开的模式之间构建了一个笛卡尔积”。对于 idlist,我只想提供 A、B,并希望返回所有其他相关节点。
    • 你设置了$idList的值吗?在您的问题中,您说您想提供“实体 id 列表”,这就是为什么在我的回答中,查询需要在 $idList 中定义的 id 列表。现在,当您说“只想提供 A、B”时,您是如何做到的?你有他们的 neo4j id,或者他们的属性值吗?顺便说一句,那个抱怨只是一个警告。如果你定义 $idList,它应该可以工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-22
    • 1970-01-01
    • 1970-01-01
    • 2020-12-06
    • 2021-04-10
    相关资源
    最近更新 更多