代码之家  ›  专栏  ›  技术社区  ›  Sam

密码检索与集合中所有节点匹配的节点

  •  0
  • Sam  · 技术社区  · 7 年前

    我正在尝试返回与连接到起始节点的集合中的所有节点匹配的节点。作为一个最小的例子,假设我有几个国家的 record s for gdp and population 用户执行一个 查询 that filters_by country=japan and by datatype=gdp 。我想返回 grouped_by japan and grouped_by gdp的所有记录。

    最小图的构造如下:

    创建 (R1:记录名称:“中国GDP”) (r2:记录名称:“中国人口”) (r3:记录名称:“日本GDP”) (R4:记录名称:“日本人口”) (C1:国家名称:“中国”) (c2:国家名称:“日本”) (s1:数据类型名称:“gdp”), (s2:数据类型名称:“population”), (R1)-[:分组依据]->(C1) (r1)-[:分组依据]->(s1), (r2)-[:分组依据]->(c1), (r2)-[:分组依据]->(s2), (r3)-[:按]->(c2)分组, (r3)-[:按]->(s1)分组, (r4)-[:分组依据]->(c2), (r4)-[:分组依据]->(s2), (Q:查询摘要:“寻找日本GDP”) (q)-[:过滤后的_]->(c2), (q)-[:过滤后]->(s1) ;

    这将生成下图:

    我需要编写一个查询,该查询返回所有grouped_bybothjapanandgdp(在本例中,它只是一条记录)的记录。

    下面的查询返回grouped_byeither japanorgdp的所有记录,但我需要grouped_byboth的记录

    match(q:query summary:“looking for japan gdp”),
    (q)-[:过滤方式]->(过滤器)
    (r:record)-[:分组依据]->(过滤器)
    返回R;
    
    
    

    收益率: .GDPPopulation对于几个国家。用户执行Query那个FILTERS_BY Country=Japan并且通过DataType = GDP. 我想把所有GROUPED_BY日本分组依据国内生产总值。

    最小图的构造如下:

    CREATE
    (r1:Record {name: "China GDP"}),
    (r2:Record {name: "China Population"}),
    (r3:Record {name: "Japan GDP"}),
    (r4:Record {name: "Japan Population"}),
    (c1:Country {name: "China"}),
    (c2:Country {name: "Japan"}),
    (s1:DataType {name: "GDP"}),
    (s2:DataType {name: "Population"}),
    (r1) - [:GROUPED_BY] -> (c1),
    (r1) - [:GROUPED_BY] -> (s1),
    (r2) - [:GROUPED_BY] -> (c1),
    (r2) - [:GROUPED_BY] -> (s2),
    (r3) - [:GROUPED_BY] -> (c2),
    (r3) - [:GROUPED_BY] -> (s1),
    (r4) - [:GROUPED_BY] -> (c2),
    (r4) - [:GROUPED_BY] -> (s2),
    (q:Query {summary: "Looking for Japan GDP"}),
    (q) - [:FILTERED_BY] -> (c2),
    (q) - [:FILTERED_BY] -> (s1)
    ;
    

    这将生成下图: Graph Overview

    我需要编写一个返回所有记录的查询分组依据二者都Japan国内生产总值(在本例中,它只是一个记录)。

    以下查询返回分组依据要么是日本国内生产总值,但我需要按二者都.

    MATCH (q:Query {summary: "Looking for Japan GDP"}),
    (q) - [:FILTERED_BY] -> (filters),
    (r:Record) - [:GROUPED_BY] -> (filters)
    return r;
    

    产量:

    1 回复  |  直到 7 年前
        1
  •  1
  •   InverseFalcon    7 年前

    performing match intersection

    MATCH (q:Query {summary: "Looking for Japan GDP"})-[:FILTERED_BY]->(filter)
    WITH filter, size((q)-[:FILTERED_BY]->()) as totalFilterCount
    MATCH (r:Record)-[:GROUPED_BY]->(filter)
    WITH r, count(filter) as matchedFilterCount, totalFilterCount
    WHERE matchedFilterCount = totalFilterCount
    RETURN r