2014-12-26 1 views
0

У меня есть два узла, А и В, А переговоры В и В переговорах А, (А) - [: talksTo] - (В)Двунаправленная передача данных в Neo4j

А имеет значение настроения в направлении B, а B имеет значение настроения по отношению к A.

Таким образом, существует проблема, мне нужны отношения A-B для хранения значения, которое отношения B-A также захотят сохранить (тот же ключ).

Так что я постараюсь сделать такие запросы, как, MATCH (A: person) - [: talkTo] - (B: person) где A.sentiment < -2 return A;

Таким образом, отношение A к B будет отличаться от настроения B к A, таким образом, необходимое разделение.

Я попытался создать уникальные имена ключей, чтобы указать направление, но это затрудняет запросы, если я не могу запросить с помощью wild card ex: ... где A.Asentiment < -2 будет запрашиваться как ... где A . * настроение < -2

Другой способ, который я могу придумать, состоит в том, чтобы сделать два разных графика: 1) Переговоры с B-графом и B ведут к графику ... но это затруднило бы запросы верните более одного узла для одноузловых запросов ИЛИ, если мне нужно обновить ключ одного узла: значение для чего-то другого. Я бы предпочел иметь одно имя узла на человека.

Любые идеи?

+0

Я немного запутался. Является ли значение настроения для узла или отношения? Когда вы говорите «A.sentiment», это означает, что он находится на узле. –

+0

Вы правы, я использовал неверное представление. A.Сентимент здесь относится к настроению относительно отношений к B. Таким образом, это должно было быть (A) -> [R: talkTo {sentiment: '10 '}] -> (B), где проблема с настройкой является проблемой. не может быть больше одного края между любыми двумя узлами, и A хочет поговорить с B с некоторыми переменными, которые являются такими же, как B, хочет поговорить с A с. В настоящее время я обойду это, создав несколько узлов, сказав (Aout) - [: talkTo] -> (Bin), (Bout) - [: conversTo] -> (Ain); но мне интересно, есть ли лучшее решение. –

+0

Вы должны определенно иметь две связи, каждая из которых идет в противоположном направлении друг от друга, но все же между теми же двумя узлами. Ты это пробовал? Это дает вам ошибку? –

ответ

0

Я не знаю, что это решение, но я не думаю, что я понимаю, достаточно, чтобы это могло быть фольгой для лучшего понимания:

MATCH (A:Person)-[dir1:talksTo]->(B:Person), (A)<-[dir2:talksTo]-(B) 
WHERE dir1.sentiment < 2 
RETURN A, B