Проверьте, существует ли связь в базе данных neo4j, не работает
Когда я создал два узла и их отношение с помощью транзакции, как показано ниже, я могу использовать graph.match(), чтобы проверить, существует ли отношение.
from py2neo import Graph, Node, Relationship, NodeSelector
g = Graph('http://localhost:7474/db/data', user='uname', password='pass')
tx = g.begin()
a = Node("Person", name="Alice")
tx.create(a)
b = Node("Person", name="Bob")
tx.create(b)
ab = Relationship(a, "KNOWS", b)
tx.create(ab)
tx.commit()
relations = g.match(start_node=a, rel_type="KNOWS", end_node=b)
list(relations) // this returns [(alice)-[:KNOWS]->(bob)]
Позже я попытался передать start_node и end_node в функцию graph.match(), как показано ниже, но это не сработало. Вместо этого была возвращена ОШИБКА: необходимо связать узлы для конечных точек соответствия отношений
d = Node("Person", name="Alice")
e = Node("Person", name="Bob")
relations = g.match(start_node=d, rel_type="KNOWS", end_node=e)
list(relations) // this returns error " Nodes for relationship match end points must be bound "
Что не так с приведенным выше кодом для получения exixting отношения между Алисой и Бобом
1 ответ
Проблема в следующем коде
d = Node("Person", name="Alice")
e = Node("Person", name="Bob")
relations = g.match(start_node=d, rel_type="KNOWS", end_node=e)
list(relations) // this returns error " Nodes for relationship match end points must be bound "
является то, что Node используется для создания нового узла как @InverseFalcon, упомянутого в комментарии. это не указывает на фактический узел на сервере. это работало, чтобы проверить отношение во время создания (Первый набор кода в моем вопросе) узлов, потому что после создания узлов класс Node возвращает объект узла.
Следующий код работал для моего проекта
d = g.run("MATCH (a:Person) WHERE a.name={b} RETURN a", b="Alice")
list_d = list(d)
start_node = list_d[0]['a']
e = g.run("MATCH (a:Person) WHERE a.name={b} RETURN a", b="Bob")
list_e = list(e)
end_node = list_e[0]['a']
relations = g.match(start_node=start_node, rel_type="KNOWS", end_node=end_node)