Может ли шаблон использоваться с регистром в neo4j cypher - PullRequest
0 голосов
/ 22 мая 2018

Можно ли использовать шаблоны с оператором case в cypher?в частности, чтобы вернуть истину или ложь, если шаблон существует.Я пытаюсь смоделировать человеческие отношения, когда дружба не отвечает взаимностью.

Итак (пользователь) - [: друг] -> (пользователь2) - это отдельная точка данных от (пользователь2) - [: друг] -> (пользователь1)

Затем я хочу запуститьзапрос, который покажет пользователю user1, который считает их своими друзьями, в ответ

что-то похожее на это (что, очевидно, не работает)

MATCH (asker)-[:friend]->(target) RETURN CASE (target)-[:friend]->(asker)
WHEN present THEN true
ELSE THEN false As returnsFriendship

в любом случае, чтобы это работало?

Я знаю, что обходной путь состоит в том, чтобы выполнить запрос, ищущий тех, кто считает друзей user1, а затем перебрать их за пределами cypher в моем приложении, но мне было интересно, есть ли для этого чистый способ шифрования.

1 Ответ

0 голосов
/ 22 мая 2018

Предложение CASE не является единственным способом получения логического результата и не является необходимым для вашего варианта использования.

Шаблоны типа (target)-[:teaches]->(asker) создают (возможно, пустую) коллекцию путей, поэтомуэто будет работать:

MATCH (asker), (target)
RETURN asker, target,
  SIZE((target)-[:teaches]->(asker)) > 0 AS returnsFriendship

Но если только нужно проверить наличие шаблона, лучше использовать функцию EXISTS:

MATCH (asker), (target)
RETURN asker, target,
  EXISTS((target)-[:teaches]->(asker)) AS returnsFriendship
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...