Обновление отношения свойства с py2neo neo4j - PullRequest
0 голосов
/ 01 июня 2018

Я пытаюсь проверить, существует ли связь между двумя узлами, но я получаю эту ошибку:

raise TypeError("Nodes for relationship match end points must be bound") TypeError: Nodes for relationship match end points must be bound

ниже моего кода:

graph = Graph(user='neo4j')

src = Node(src_type, internal_id=int(src_id))
dst = Node(dst_type, internal_id=int(dst_id))

src_voted_dst = Relationship(src, "VOTED", dst)

for elem in graph.match(start_node=src, rel_type="VOTED", end_node=dst, bidirectional=True):
    elem.properties["vote"] = elem.properties["vote"] + 1
    elem.push()
    break
else:
    src_voted_dst.properties["vote"] = 1
    graph.merge(src_voted_dst)

1 Ответ

0 голосов
/ 04 июня 2018

В коде:

src = Node(src_type, internal_id=int(src_id))
dst = Node(dst_type, internal_id=int(dst_id))

src и dst создаются локально, но не связаны с этими узлами в базе данных.Свяжите локальные узлы с базой данных с помощью слияния:

db_src = graph.merge(src)
db_dst = graph.merge(dst)

Тогда сопоставление должно сработать:

for elem in graph.match(db_src, "VOTED", db_dst)

(обратите внимание, что elem.properties ["voice"] не будет работать, тамдолжно быть что-то ссылка elem.start_node () ["голосование]] или elem.end_node () [" голосование]])

...