Несоответствие типов: подключенная компания уже определена с конфликтующим типом Любой (ожидаемый узел) - PullRequest
0 голосов
/ 27 августа 2018

Я использую Neo4j Community 3.4 с APOC 3.4.0.1 и выполняю следующий запрос:

MATCH (a:COMPANY)
WITH apoc.coll.randomItems(collect(a), count(a)/100) as companies
UNWIND companies as company
MATCH (b:COMPANY)
WITH collect(b) as companies, company
WITH company, apoc.coll.randomItem(companies) as connectedcompany
CREATE (connectedcompany)-[:IS_SHAREHOLDER_OF]->(company);

Запрос предназначен для создания избранных 1% компаний в моей базе данных и случайного связывания их с другой компанией с помощью отношения IS_SHAREHOLDER_OF.

В результате запроса появляется следующее сообщение

Neo.ClientError.Statement.SyntaxError: Несоответствие типов: connectedcompany уже определено с конфликтующим типом Any (ожидаемый узел) (строка 7, колонка 9 (смещение: 250)) "СОЗДАТЬ (Connectedcompany) - [: IS_SHAREHOLDER_OF] -> (компании); "

Что я делаю не так?

Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 28 августа 2018

Как только вы выйдете из 3.4.0 и к последней версии патча 3.4.x, вы сможете избежать этой ошибки.

Что касается самого запроса, вы делаете ненужное совпадение с (b: COMPANY). Ранее вы подходили всем компаниям, поэтому вы можете повторно использовать список:

MATCH (a:COMPANY)
WITH collect(a) as allCompanies
WITH allCompanies, apoc.coll.randomItems(allCompanies, size(allCompanies)/100) as companies
UNWIND companies as company
WITH company, apoc.coll.randomItem(allCompanies) as connectedcompany
CREATE (connectedcompany)-[:IS_SHAREHOLDER_OF]->(company);

Я включил перетасовку всех компаний в качестве альтернативного подхода, но ваш подход randomItems () будет работать так же хорошо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...