2015-05-26 2 views
1

У меня есть график Neo4j, где каждый узел является человеком. Каждый человек имеет два свойства: имя и город. И отношения: друг и любовь.Neo4j найти узлы с теми же свойствами

Я пытаюсь получить узлы, у которых есть друзья ТОЛЬКО в их же городе (живые в Париже, B в Париже, C в Мадриде, D в Мадриде, A- [friend_of] -> B, B- [ friend_of] -> C a A- [friend_of] -> C, D- [friend_of] -> CI нужно только получить A и D, потому что их друзья живут в том же городе и только там) и закажите их по городу сначала, а затем по имени.

Я попытался следующие:

MATCH (n)-[r:FRIEND_OF]-(n1) WHERE (n.City = n1.City) RETURN n,n1 ORDER BY n.City, n.Name 

Это дает мне узлы хотели, но некоторые из них тоже неправильно (у них есть друзья в других городах).

Спасибо!

+0

Я не понимаю, как B может быть частью отпечатанного ожидать. B (в Париже) является другом с кем-то (C) из другого города (Мадрид). Можете ли вы подробнее рассказать о том, что именно вы хотите? – Rolf

+0

Вы правы, я сделал ошибку ввода, ожидаемый результат - только D, потому что это единственный, кто живет его друзьями и живет только в одном городе, кроме него. Теперь я исправил его. – carlos

+0

О, кстати, когда кто-то друг другого, это значит, что существует взаимная связь (друг B, друг B A) – carlos

ответ

2

На основе следующего Neo4j консоли http://console.neo4j.org/r/5c2n8h, этот запрос возвращает вам только D, как хотелось:

MATCH (user:User)-[:FRIEND_OF]-(friend) 
WITH user, collect(friend) AS friends 
WHERE ALL (f IN friends WHERE f.City = user.City) 
RETURN user 
ORDER BY user.City, user.name 
+0

спасибо, что это сработало! – carlos

1

Попробуйте это:

MATCH (u:User {name:"carlos"})-[:FRIEND_OF]-(f:User) 
WITH u, collect(f) as friends 
WHERE ALL(f in friends WHERE f.City = u.City) 
UNWIND friends as friend 
RETURN friend 
ORDER BY friend.City, friend.Name 
+0

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

Смежные вопросы