在 neomodel 中使用 relationship_id 删除 neo4j 节点之间的关系
Delete relationship between neo4j nodes using relationship_id, in neomodel
我在 neomodel 中有 neo4j 节点和关系模式,如下所示。现在我需要创建一个函数,以便它获取 PersonRel 的 uid 并删除通过此关系连接的两个人之间的关系。我在文档中找不到它:https://neomodel.readthedocs.io/en/latest/
class PersonRel(StructuredRel):
uid = StringProperty()
created_at = DateTimeProperty(
default=lambda: datetime.now(pytz.utc)
)
weight = FloatProperty()
direction = StringProperty()
class PersonNode(StructuredNode):
uid = UniqueIdProperty()
label = StringProperty(required=True)
description = StringProperty()
related_to = RelationshipFrom("PersonNode", "related_to", model=PersonRel)
created_at = DateTimeProperty(
default=lambda: datetime.now(pytz.utc)
)
我用Py2Neo所以,我对Neomodel不熟悉。如果您没有找到任何通过 属性 查找和删除关系的选项,您可以选择使用独立的 Cypher 查询来删除它。
您可以像这样执行 standalone cypher query in Neomodel:
db.cypher_query(query, params)
您的删除查询如下:
MATCH ()-[rel]-() WHERE rel.uid={{uid}} DELETE rel
正如 Raj 指出的那样,在 Neomodel 中也可以编写任何原始密码查询。但是在文档中,这个过程并没有描述清楚。
下面的代码终于帮我得到了需要的结果:
from neomodel import db as neodb
neodb.cypher_query("MATCH ()-[rel {uid:{uid}}]-() delete rel", {"uid": rel_id})
需要注意的是,参数需要以字典形式传递,文档中没有提到。此外,{uid:{uid}}
- 在这部分查询中,内部 uid(也是大括号)是一个应该在参数中传递的变量。但是外括号是密码语法的一部分,因此新模型代码不会将其视为变量。此外,无需在 {uid}
.
周围添加引号
我在 neomodel 中有 neo4j 节点和关系模式,如下所示。现在我需要创建一个函数,以便它获取 PersonRel 的 uid 并删除通过此关系连接的两个人之间的关系。我在文档中找不到它:https://neomodel.readthedocs.io/en/latest/
class PersonRel(StructuredRel):
uid = StringProperty()
created_at = DateTimeProperty(
default=lambda: datetime.now(pytz.utc)
)
weight = FloatProperty()
direction = StringProperty()
class PersonNode(StructuredNode):
uid = UniqueIdProperty()
label = StringProperty(required=True)
description = StringProperty()
related_to = RelationshipFrom("PersonNode", "related_to", model=PersonRel)
created_at = DateTimeProperty(
default=lambda: datetime.now(pytz.utc)
)
我用Py2Neo所以,我对Neomodel不熟悉。如果您没有找到任何通过 属性 查找和删除关系的选项,您可以选择使用独立的 Cypher 查询来删除它。
您可以像这样执行 standalone cypher query in Neomodel:
db.cypher_query(query, params)
您的删除查询如下:
MATCH ()-[rel]-() WHERE rel.uid={{uid}} DELETE rel
正如 Raj 指出的那样,在 Neomodel 中也可以编写任何原始密码查询。但是在文档中,这个过程并没有描述清楚。
下面的代码终于帮我得到了需要的结果:
from neomodel import db as neodb
neodb.cypher_query("MATCH ()-[rel {uid:{uid}}]-() delete rel", {"uid": rel_id})
需要注意的是,参数需要以字典形式传递,文档中没有提到。此外,{uid:{uid}}
- 在这部分查询中,内部 uid(也是大括号)是一个应该在参数中传递的变量。但是外括号是密码语法的一部分,因此新模型代码不会将其视为变量。此外,无需在 {uid}
.