Neo4jは比較的新しいので、この質問に対する明らかな答えがある場合はお詫び申し上げます。私はユーザーノード、アカウントノード、およびそれらの間のASSIGNED_TO関係を持つDBを持っています。私は、ユーザーと割り当てられたアカウントを取得するためのクエリ(下記)がありますが、LIMIT/SKIPの結果に関係なく、同じクエリで見つかったユーザーの数を取得したいと考えています。何が起こっているかのように、ユーザーカウントはMATCHクエリの結果ではなく、OPTIONAL MATCH結果に基づいています。Neo4jノードとノード数を同時に取得する
データベースに3人のユーザーと3人のアカウントがあり、2人のユーザーに2人のユーザーが割り当てられ、1人のユーザーに1人のアカウントのみが割り当てられています。
これはクエリです:
MATCH (user:User) WITH user OPTIONAL MATCH (user)-[assigned:ASSIGNED_TO]-(account:Account) RETURN user, count(user) as userCount, collect(account) as accounts SKIP 0 LIMIT 25
これが結果です:
user userCount accounts {id: 2} 1 [{id: 2}] {id: 1} 2 [{id: 2}, {id: 1}] {id: 3} 2 [{id: 1}, {id: 3}]
私はUSERCOUNT値は、すべての行の3になりたいです。 'count(user)'を 'count(DISTINCT user)'に変更すると、userCountに1が与えられます。可能であれば、2つの個別のクエリを実行しないようにしたい。
パーフェクトを行う必要があります!正確に私が必要としたもの。ありがとう。 – Jason
非常に効果がありません - プロファイラのクエリを見てください。 –