我想查询一组节点的属性,其关系和具有某些属性的目标节点的子集(来自Java和CYPHER,通过REST)。我的想法如下:
MATCH a WHERE id(a) IN {ids}
OPTIONAL MATCH (a)-[r]->(b)
RETURN id(a), a.name, a.attr1, r.attr2, id(b), b.name
现在,我对每个关系都有一个“行”,但是它多次包含每个节点“ a”的数据。
是否有更好的方法进行这样的查询,以使节点“ a”的属性仅传输一次?一种想法是进行两个单独的查询,但是如果WHERE条件稍微复杂一点,则可以执行两次。
使用收集功能。
http://neo4j.com/docs/stable/query-aggregation.html#aggregation-collect
MATCH a WHERE id(a) IN {ids}
OPTIONAL MATCH (a)-[r]->(b)
RETURN id(a), a.name, a.attr1, collect([r.attr2, id(b), b.name])
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句