ノードのセット、それらの属性のサブセット、それらの関係、およびそれらの属性のいくつかを持つターゲットノード(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」の属性が1回だけ転送されるように、このようなクエリを実行するためのより良い方法はありますか?1つのアイデアは、2つの別々のクエリを作成することですが、WHERE条件がもう少し複雑な場合は、2回実行される可能性があります。
収集機能を使用します。
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]
コメントを追加