найти конкретный узел, который соответствует трем критериям neo4j - PullRequest
0 голосов
/ 22 ноября 2018

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

match (s:good)-[r:TRADES]-(n:Name)-[:TRADES]-(p:good)
WHERE (s.good = 'Apple' or s.good='Orange') and p.stock ='Grapes'
return s,n,p

, где он возвращает запрос, как показано ниже.enter image description here Однако я просто хочу следующее.Только тот, кто торгует только виноградом, апельсином и яблоком.enter image description here

Я не знаю, какая часть шифра неверна.спасибо за помощь

1 Ответ

0 голосов
/ 22 ноября 2018

У нас есть статья базы знаний по пересечению совпадений , что вы пытаетесь сделать здесь, однако другое ограничение заключается в том, что это только 3 подключенных узла, поэтому нам нужно выполнить дополнительную работу.

Используя первый подход в статье, нам просто нужно добавить дополнительный предикат, чтобы обеспечить степень: отношения TRADES равны размеру коллекции:

WITH ['Apple', 'Orange', 'Grapes'] as names
MATCH (g:good)<-[:TRADES]-(n:Name)
WHERE g.good in names AND size((n)-[:TRADES]->()) = size(names)
WITH n, size(names) as inputCnt, count(DISTINCT g) as cnt
WHERE cnt = inputCnt
RETURN n
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...