Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Neo4j 具有多个匹配语句的Cypher查询并返回COLLECT数组_Neo4j_Cypher - Fatal编程技术网

Neo4j 具有多个匹配语句的Cypher查询并返回COLLECT数组

Neo4j 具有多个匹配语句的Cypher查询并返回COLLECT数组,neo4j,cypher,Neo4j,Cypher,我有一个特定的密码查询问题,我希望有人能帮助我。我试图查询父对象的不同关系类型,以便返回一个响应,该响应包括父对象的id、名称和节点标签的一些键/值对,同时还返回子对象数组作为返回的同一对象中的另一个键/值对。子数组来自第二个关系匹配集。当我运行这个程序时,数组中的元素数量要比与父级的关系支持的元素数量大得多(大约100个元素,而不是预期的三个) 以下是我希望最终产生的json输出: { "id" : "839930493049039430"

我有一个特定的密码查询问题,我希望有人能帮助我。我试图查询父对象的不同关系类型,以便返回一个响应,该响应包括父对象的id、名称和节点标签的一些键/值对,同时还返回子对象数组作为返回的同一对象中的另一个键/值对。子数组来自第二个关系匹配集。当我运行这个程序时,数组中的元素数量要比与父级的关系支持的元素数量大得多(大约100个元素,而不是预期的三个)

以下是我希望最终产生的json输出:

{
    "id"                        : "839930493049039430",
    "name"                      : "lorem",
    "type"                      : "epsim",
    "rel_one_representation"    : {
        "keystring"             : { 
            "id"                : "839930493049039430_all",
            "count"             : 7
        }
    },
    "rel_two_representation"    : [
        {
            "name"              : "barker"
        },
        {
            "name"              : "bird"
        },
        {
            "name"              : "tiki"
        }
    ]
}

提前感谢您提供的任何指导。

您的查询的问题是,它返回了
子节点1
子节点2
的所有可能对的结果。这导致每个
children\u-two
节点重复N1次,其中N1是
children\u-one
节点的数量。它还导致每个
子节点\u-one
重复N2次,其中N2是
子节点\u-two
节点的数量

解决方案1: 这种方法使用
WITH
来分隔两个
MATCH
子句,以避免“配对效应”

解决方案2: 这种方法使用
DISTINCT
关键字来过滤重复项

{
    "id"                        : "839930493049039430",
    "name"                      : "lorem",
    "type"                      : "epsim",
    "rel_one_representation"    : {
        "keystring"             : { 
            "id"                : "839930493049039430_all",
            "count"             : 7
        }
    },
    "rel_two_representation"    : [
        {
            "name"              : "barker"
        },
        {
            "name"              : "bird"
        },
        {
            "name"              : "tiki"
        }
    ]
}
MATCH (n)-[relone:RELATIONSHIP_ONE]->(children_one)
WHERE n.id='839930493049039430'
WITH n, COUNT(relone) AS cnt
MATCH (n)-[reltwo:RELATIONSHIP_TWO]->(children_two)
RETURN n.id AS id, n.name AS name, LABELS(n)[0] AS type, { keystring: { id: (n.id + '_all'), count: cnt }} AS rel_one_representation, COLLECT({ name : children_two.name }) AS rel_two_representation
MATCH (n)-[relone:RELATIONSHIP_ONE]->(children_one),(n)-[reltwo:RELATIONSHIP_TWO]->(children_two)
WHERE n.id='839930493049039430'
RETURN n.id AS id, n.name AS name, LABELS(n)[0] AS type, { keystring: { id: (n.id + '_all'), count: COUNT(DISTINCT relone)}} AS rel_one_representation, COLLECT(DISTINCT { name: children_two.name }) AS rel_two_representation