限制Neo4j中的子节点性能

限制Neo4j中的子节点性能,neo4j,cypher,nosql,Neo4j,Cypher,Nosql,我正在编写一个密码,使用此密码,每个类别可以获得5个产品的输出: MATCH (s:Supplier)-[:POST]->(p:Product)-[:BELONG_TO]->(c:Category) WITH * MATCH r = (c)<-[:BELONG_TO*0..5]-(p) WITH c, collect(tail(nodes(r))) AS allCatProducts RETURN c, reduce(outputProducts=allCatProducts

我正在编写一个密码,使用此密码,每个类别可以获得5个产品的输出:

MATCH (s:Supplier)-[:POST]->(p:Product)-[:BELONG_TO]->(c:Category) 
WITH *
MATCH r = (c)<-[:BELONG_TO*0..5]-(p)
WITH c, collect(tail(nodes(r))) AS allCatProducts
RETURN c, reduce(outputProducts=allCatProducts[..0] , catProduct IN allCatProducts | outputProducts + catProduct)[..5];


任何帮助都将不胜感激。

您似乎使查询过于复杂,此查询应该可以完成以下工作:

MATCH (s:Supplier)-[:POST]->(p:Product)-[:BELONG_TO]->(c:Category)
RETURN c.name, collect(p)[..5] as products

关于你的另一个问题:

(x)-[r:BELONG_TO*0..5]->(y)
是可变长度路径查询,但是这里您应该知道,如果没有找到
y
节点,
x
将作为
y
返回


告诉我们只返回集合的前5个元素,例如,集合就像Java中的
列表
,或者php中的
数组

MATCH (s:Supplier)-[:POST]->(p:Product)-[:BELONG_TO]->(c:Category)
RETURN c.name, collect(p)[..5] as products
(x)-[r:BELONG_TO*0..5]->(y)
(collection)[..5]