neo4j - 如何在关系查询结果中引入一种类型的所有节点?

时间:2016-07-22 12:37:59

标签: neo4j cypher

我很抱歉这个愚蠢的问题。我在neo4j数据库中有两种类型的节点,即select t.id, t.name, dayname, value from t outer apply (values ('monday', monday), ('tuesday', tuesday), ('wednesday', wednesday), ('thursday', thursday), ('friday', friday), ('saturday', saturday), ('sunday', sunday) ) v(dayname, value) where value is not null; Recipes。我在neo4j中运行一个cypher查询,它会导致两种类型节点之间的所有关系。查询不是那么特殊,它是返回限制为200个节点的默认查询。

Meal_Type

运行正常。但至少,我需要结果中的所有MATCH ()-[r]->() RETURN r LIMIT 200个节点,而不管结果的其余部分。现在它在11 Meal_Types中返回3(有时重新运行查询时为4,5)。

2 个答案:

答案 0 :(得分: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]

答案 1 :(得分:0)

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

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

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