Как я могу вернуть unMutualContacts с cypher?

Вот супер простой способ сделать это

row2dict = lambda r: dict(r.items())
0
задан James111 13 July 2018 в 05:26
поделиться

1 ответ

В этом случае будет проще работать со списками. Я заметил, что вы используете множественные имена переменных users и viewerUsers, но они не представляют списки, они представляют индивидуальное соответствие для каждой строки. Я нахожу, что это помогает, если вы сохраняете только множественные имена переменных для списков, что позволяет избежать некоторой путаницы.

Хотя мы могли бы использовать MATCH и collect (), чтобы получить список пользователей для исключения, мы примем ярлык и использование шаблона, чтобы получить список из совпадения в одной строке. И как только у нас есть список пользователей для исключения, мы можем использовать это в предложении WHERE для подключенных пользователей y, чтобы мы отфильтровали все, что должно быть исключено (поскольку они подключены к x).

WITH [(:User { id: x })-[:CONNECTED]-(user:User) | user] as excluded
MATCH (:User { id: y })-[:CONNECTED]-(user:User)
WHERE NOT user IN excluded
RETURN user

В качестве альтернативы вы можете взять оба списка и выполнить вычитание списков с помощью процедур APOC:

WITH [(:User { id: x })-[:CONNECTED]-(user:User) | user] as excluded,
 [(:User { id: y })-[:CONNECTED]-(user:User) | user] as users
RETURN apoc.coll.subtract(users, excluded) as users

Обратите внимание, что этот будет возвращать только один список, поэтому, если вы хотите вернуться к нескольким записям с одним пользователем, каждый из которых вам понадобится пользователям UNWIND.

1
ответ дан InverseFalcon 17 August 2018 в 13:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: