【问题标题】:neo4j - How to bring all nodes of one type in a result of relationship query?neo4j - 如何在关系查询结果中引入一种类型的所有节点?
【发布时间】:2016-07-22 12:37:59
【问题描述】:

我很抱歉这个愚蠢的问题。我在neo4j 数据库中有两种类型的节点,即RecipesMeal_Type。我在 neo4j 中运行一个密码查询,结果是两种类型的节点之间的所有关系。查询没有那么特殊,它是默认查询,返回的关系限制为 200 个节点。

MATCH ()-[r]->() RETURN r LIMIT 200

运行良好。但我至少需要结果中的所有Meal_Types 节点,而不管结果的其余部分。现在它在 11 个 Meal_Types 中返回 3 个(有时在重新运行查询时返回 4,5 个)。

【问题讨论】:

    标签: neo4j cypher


    【解决方案1】:

    我认为您应该首先获取所有Meal_Type 节点,然后根据该结果获取一组与其对应的Recipe 节点。

    这是我所说的一个例子。获取所有不同的膳食类型,当然除非您有一些您感兴趣的特定膳食类型。然后使用这些膳食类型返回相应食谱集的样本 (200 ~= 19 * 11)。

    // match meal types
    MATCH (mt:Meal_Type)
    WITH mt
    // find a sampling of the the corresponding recipes.
    MATCH (mt)<-[OF_TYPE]-(r:Recipe)
    RETURN mt, collect(r)[0..18] AS recipe_sample
    

    【讨论】:

    • match (mt:Meal_Type) with mt match (mt) --> match (mt:Meal_Type) 还是我错过了什么?
    【解决方案2】:

    真的吗?我昨天用你之前的问题回答了that,只是一个变体。

    这应该可以解决问题,按节点标签对关系进行排序:

    MATCH (n)-[r]-()
    RETURN r
    ORDER BY head(labels(n))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-17
      • 1970-01-01
      相关资源
      最近更新 更多