Я не уверен, что ограничения для коллекций, но я могу легко создать 100000 с return range (1,100000) as largeCollection
.
Однако, лучший способ, чтобы получить эти узлы, чтобы размотать коллекцию в ряды, а затем сопоставить на узлах с этими ключами:
// 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
Из вашего комментария, вам кажется хотите только вернуть ключи оборудования, где: Узел оборудования имеет путь к вашему узлу: person.
MATCH, который вы используете в настоящее время, найдет ВСЕ возможные пути, которые будут дросселироваться на средних и больших размерах, особенно со многими отношениями.
Возможно, вы захотите воспользоваться функцией EXISTS(), которая вернет true или false, если такой путь существует. Тем не менее, вы можете захотеть ограничить путь, указав верхнюю границу возможного.
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-го уровня, и поэтому использование выше моего запроса будет: «С [1505697,2406945,2408297,2408531,2410815,2413566,2415224] as equipKeys MATCH (n: person {key: 2529962, ownBy: 0}) UNWIND equipKeys as equipKey MATCH (c: Оборудование {ключ: equipKey}) MATCH путь = (n) <- [: отношение * 0 .. ] - (c) RETURN distinct c.key " Но этот запрос занимает время в случае узлов, имеющих большое количество отношений. Можете ли вы предложить лучший способ добиться этого. Спасибо – Navneet