Связь в Py2neo с Neo4j

Как я могу получить конечный узел отношения. Например:

rels = graph_db.match(start_node=user, rel_type="is_post_owner")

Итак, как я могу получить все конечные узлы пользователя начального узла.

С уважением, Самуэль


person Samuel Körner    schedule 13.05.2013    source источник


Ответы (2)


Как это:

rels = graph_db.match(start_node=user, rel_type="is_post_owner")
end_nodes = [rel.end_node for rel in rels]

Каждое отношение, возвращаемое методом match, является стандартным отношением. объект и может использоваться как таковой.

person Nigel Small    schedule 13.05.2013

Вы можете использовать шифр

START a=node(id) //replace with the id of the node you want to start 
MATCH p=a-[:is_post_owner*..]->x //get all the paths to all nodes with rel:is_post_owner
WHERE NOT(x-->()) //exclude nodes with Direction Out Relationships "end nodes"
RETURN x //get the end nodes

Таким образом, возвращаемые узлы будут конечными узлами вашего графа без каких-либо других отношений с направлением наружу.

Как заявил Томас, в чем он абсолютно прав, вы должны включить тип отношения в предложение where. Таким образом, вы получаете только конечный узел этого отношения, а возвращаемые узлы могут иметь другие отношения с направлением наружу (не конечные узлы), но они являются конечными узлами запрошенной связи

 START a=node(id) 
 MATCH p=a-[r:is_post_owner*..]->x 
 WHERE NOT(x-->(r)) 
 RETURN x 
person SotirisTsartsaris    schedule 13.05.2013
comment
Вы должны добавить тип отношения в ГДЕ нет, могут быть другие, не связанные - person Thomas Fenzl; 13.05.2013