Как я могу самостоятельно ссылаться на таблицу в Neo4j? - PullRequest
0 голосов
/ 03 апреля 2019

У меня есть несколько таблиц, загруженных в Neo4j.Я просмотрел несколько учебных пособий и нашел этот шифровый запрос.

MATCH (n:car_detail)
RETURN COUNT(DISTINCT n.model_year), n.model, n.maker_name
ORDER BY COUNT(DISTINCT n.model_year) desc

Этот запрос дал мне все машины, которые были проданы или сняты с производства.Логика, которая считается одним, прекращается, а все остальное продолжается.

В моем столе car_detail есть автомобили, которые были построены в разные годы.Я хочу создать отношения, например, "Audi A4 2011" - (: ПРОДОЛЖЕНИЕ) -> "Audi A4 2015" - (: ПРОДОЛЖЕНИЕ) -> "Audi A4 2016"

Ответы [ 2 ]

1 голос
/ 03 апреля 2019

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

Мы можем использовать Процедуры APOC в качестве ярлыка для создания связанного списка через упорядоченные и собранные узлы, вам нужно установить его (с соответствующей версией, соответствующей вашей версии Neo4j), чтобы принять Преимущество этой возможности, так как подход чистого шифра довольно некрасив.

Запрос будет выглядеть примерно так:

MATCH (n:car_detail)
WITH n
ORDER BY n.model_year
WITH collect(n) as cars, n.model as model, n.maker_name as maker
WHERE size(cars) > 1
CALL apoc.nodes.link(cars, 'CONTINUED')
RETURN cars

Ключевым моментом здесь является то, что после того, как мы упорядочим узлы, мы агрегируем узлы по модели и производителю, которые действуют как ваш ключ группировки (при агрегировании переменные неагрегирования становятся ключом группировки для агрегации). Это означает, что ваши заказанные автомобили будут сгруппированы по маркам и моделям, поэтому осталось только использовать APOC для создания отношений, связывающих узлы в списке.

0 голосов
/ 03 апреля 2019

Вы можете просто найти обе машины с MATCH и затем соединить их:

например

MATCH (c1:car_detail) 
where c1.model = 'Audi A4 2011' 
MATCH (c2:car_detail) 
where c2.model = 'Audi A4 2015' 
CREATE (c1)-[:CONTIUED]->(c2);

и т. Д.

...