Экземпляр My Neo4j заполнен полным набором данных для выпускников из местного университета. Небольшой% (15K) узлов (248K) (n: выпускников) включает имя пользователя twitter. Моя цель - использовать приложение GITHUB (TWIITER to NEO4J), которое загружает и связывает twitter screenNames, чтобы получить данные отношений. Моя проблема заключается в том, что запрос ниже (который содержится в java-скрипте из приложения GITHUB). Cypher создает нежелательные следящие/следующие узлы, которые не совпадают с именем alumni screen_name. Я хотел бы написать запрос, который позволяет создавать отношения только из приложения. Дайте мне знать, если это понятнее ....Необходимость MATCH вместо MERGE
MERGE (targetNode:Person {screen_name: {screenName}})
FOREACH (friend in {userList} |
MERGE (friendNode:Person {screen_name: friend.screen_name})
ON CREATE SET friendNode=friend
MERGE (targetNode)-[:FOLLOWS]->(friendNode))
Это была моя идея - я поставил MERGE на матч Alumni
MATCH (targetNode:Alumni {screen_name: {screenName}})
WHERE targetNode:Alumni.screen_name = {screen_name}
FOREACH (friend in {userList} |
MATCH (friendNode:Alumni {screen_name: friend.screen_name})
SET friendNode=friend
MERGE (targetNode)-[:FOLLOWS]->(friendNode))
Спасибо за любые мысли ...
var multiline = require('multiline');
exports.upsertOne = multiline(function(){/*
MERGE (n:Person {screen_name: {screenName}})
ON CREATE SET n+={userMap}
RETURN n
*/});
/*
* Parameters are:
*
* screenName - string, the handle of the person to attach followers to
* userList - array of objects, people to merge and create relationships
*/
exports.upsertManyAndFollows = multiline(function() {/*
MATCH (followeeNode:Alumni {screen_name: {screenName}})
UNWIND {userList} as follower
MATCH (followerNode:Alumni {screen_name: follower.screen_name})
SET followerNode=follower
MERGE (followerNode)-[:FOLLOWS]->(followeeNode)
*/});
/*
* Parameters are:
*
* screenName - string, the handle of the person to attach followers to
* userList - array of objects, people to merge and create relationships
*/
exports.upsertManyAndFriends = multiline(function() {/*
MATCH (targetNode:Person {screen_name: {screenName}})
UNWIND {userList} as friend
MATCH (friendNode:Person {screen_name: friend.screen_name})
SET friendNode=friend
MERGE (targetNode)-[:FOLLOWS]->(friendNode)
*/});
/*
* Parameters are:
*
* screenName - string, the handle of the person that is at the center of the graph.
*
*/
Вы не определили, с какой проблемой вы столкнулись и где именно вам нужна помощь. Пожалуйста, уточните свое описание, прежде чем оно закрывается. – InverseFalcon
Следует отметить, однако, что ... вы сказали, что создали: узлы Person в другой части приложения, но вы используете: узлы выпускников в последнем запросе. Убедитесь, что вы используете те же метки. – InverseFalcon
, пожалуйста, дайте мне знать, если это поможет - не я попробую еще раз ... – INNOSOLjim