私は制限がコレクションのためにあるかわからないんだけど、私は簡単にreturn range (1,100000) as largeCollection
100,000を作成することができます。
しかし、これらのノードを取得するためのより良い方法は、行の中にコレクションをほどく、その後、それらのキーを持つノードに一致させることです。
// better to parameterize this, when you get the chance
WITH [1505697,2406945,2408297,2408531,2410815,2413566,2415224] as equipKeys
MATCH (n:person{key:2529962, ownBy:0})
UNWIND equipKeys as equipKey
MATCH (c:Equipment{key:equipKey})
MATCH path = (n)<-[:relation]-(c)
RETURN distinct EXTRACT (p in NODES(path)| p.key);
EDIT
あなたのコメントから、それはあなたのようです人ノード:機器のノードあなたへのパスを持っている:のみ装備キーを返すようにしたいです。
現在使用しているマッチでは可能な限りすべてのパスが見つかるため、中規模から大規模のグラフ、特に多くのリレーションシップが発生します。
は、あなたはおそらく、そのようなパスが存在する場合はtrueまたはfalseを返しますEXISTS()関数を利用することをお勧めします。それはあなたが可能なの上限を与えることによって、パスを制限することを検討する必要があり、と述べました。
WITH [1505697,2406945,2408297,2408531,2410815,2413566,2415224] as equipKeys
MATCH (n:person{key:2529962, ownBy:0})
UNWIND equipKeys as equipKey
MATCH (c:Equipment{key:equipKey})
WITH DISTINCT n, c
WHERE EXISTS((n)<-[:relation*0..10]-(c))
RETURN c.key
感謝を。 – Navneet
私のユースケースでは、結果がn番目のレベルまでのパスに存在するキーとして欲しいので、上記のクエリは次のようになります: "WITH [1505697,2408531,2410815,2413566,2415224] as equipKeys MATCH(N:人{キー:2529962、ownBy:0}) UNWIND equipKeys equipKey MATCH(C:機器{キー:equipKey})など=(N)< MATCHパス - [* 0の関係.. ] - (c) RETURN distinct c.key " しかし、このクエリは、関係の数が多いノードの場合は時間がかかります。あなたは同じことを達成するために任意のより良い方法を提案してくださいすることができます。 ありがとう – Navneet