2016-09-21 2 views
-2

У меня есть отношения:
(U: Пользователь) - [r: tagged {tagID, timestamp}] -> (P: Player {Name = 'Tom'})neo4j Использовать связь, чтобы найти соответствующее свойство

User1 tagged player Tom,the tagID is 1 and the tagName is good 
User2 tagged player Tom,the tagID is 2 and the tagName is bad 

и узлы, как:
(т: тег {TagID, TagName}) 'тег'

tagID tagName 
1  Good 
2  Bad 

узлы и отношения с тегами используют один и тот же TagID, как можно найти все тэгу, такие как Хороший, Плохой и т. Д., Основанный на имени игрока, такого как Том? Я попробую что-то вроде:

match (:User)-[r:tagged]->(P:Player{Name:'Tom'}),(t:tag) 
where t.tagID=r.tagID 
return t.tagName 
order by tagName desc 
limit 20 

и я получаю синтаксическую ошибку.
, что я ожидаю

tagName 
Good 
Bad 
+0

До сих пор не очень понятно. Вы говорите о Пользователях в своем описании, но они не являются частью вашего вопроса. Кроме того, что вы пробовали и что вы получили вместо того, что вы ожидали? – peinearydevelopment

ответ

0

После вашего редактирования ваш запрос выглядит почти правильно, ему просто нужны небольшие корректировки.

Возможно, вы должны добавить свою синтаксическую ошибку, но я думаю, это потому, что вы пытаетесь заказать только «tagName», которая не является переменной или столбцом в области видимости («t.tagName» находится в области видимости, вы можете захотеть с псевдонимом)

Вы также захотите убедиться, что вы используете отличительные элементы там, где находится, либо на tagID после того, как на совпадающих тегах, так как несколько человек могут пометить игрока с помощью тот же тег.

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

match (:User)-[r:tagged]->(:Player{Name:'Tom'}) 
with distinct r.tagID as tagID 
match (t:tag) 
where t.tagID = tagID 
return t.tagName AS tagName 
order by tagName desc 
limit 20 
0

трудно ответить на ваш вопрос без дополнительной информации. 1. В ваших отношениях описание property3. 2. Вы не указали настоящую информацию о своих объектах или их отношениях.

Моя догадка, хотя это вы хотите что-то вроде этого: match(b {property0:'VALUE0'}) match(b)<-[r:{property1:'VALUE1', property2:'VALUE2'}]-(a) return a

В основном это говорит, создать переменную б и присвоить ему объекты в БД, которые имеют property0 со значением, равным VALUE. Затем создайте другую переменную a и присвойте ей значения, которые имеют отношение с b, где отношение имеет свойство1, равное VALUE1, и свойство2, равное VALUE2. Пожалуйста, укажите более подробную информацию о том, что вы пытаетесь выполнить, и о том, какие ошибки вы получаете, если это не то, что вы ищете.

+0

Подробнее добавлено, извините за предыдущий вопрос. – toblKr