2015-01-22 2 views
0

У меня в моем БД есть пользовательский узел, подключенный к узлу userDevice. В отношении отношений между ними существует свойство, называемое pushId.neo4j match statment возвращает больше узлов, чем захотелось

Я пытаюсь получить список pushIds и идентификаторов пользовательских устройств определенных пользователей.

match (user:User)-[r:WITH_DEVICE]->(device:UserDevice) 
where user.id="222" or user.id="243243" 
RETURN r.pushId,device.id 

вместо двух рядов он дублирует одну строку дважды и возвращает 3 строки.

+3

Вы уверены, что есть только одна связь между пользователем и устройством? Если вы добавите 'ID (r)' в свой оператор return, вы сможете увидеть, являются ли они одинаковыми отношениями. – JohnMark13

+0

Вы правы. Мне нужно проверить, как между узлами существует две связи. Моя ошибка, спасибо! –

ответ

1

Используйте DISTINCT ключевое слово

match (user:User)-[r:WITH_DEVICE]->(device:UserDevice) 
where user.id="222" or user.id="243243" 
RETURN DISTINCT r.pushId,device.id 

http://neo4j.com/docs/stable/query-return.html#return-unique-results

+0

Не работает, я пробовал. Если оба идентификатора пользователя одинаковы, он возвращает мне 1 строку. Я хочу, чтобы он вернул мне ровно 2 строки –