1

我在 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)
    )
4

2 回答 2

2

我使用 Py2Neo 所以,我不熟悉Neomodel。如果您没有找到任何按属性查找和删除关系的选项,您可以选择使用独立的 Cypher 查询将其删除。

您可以在 Neomodel 中执行独立的密码查询,例如:

db.cypher_query(query, params)

您的删除查询将如下所示:

MATCH ()-[rel]-() WHERE rel.uid={{uid}} DELETE rel
于 2019-07-22T06:30:57.270 回答
1

正如 Raj 指出的那样,在 Neomodel 中也可以编写任何原始密码查询。但是,在文档中,没有清楚地描述该过程。

以下代码最终帮助我获得了所需的结果:

from neomodel import db as neodb
neodb.cypher_query("MATCH ()-[rel {uid:{uid}}]-() delete rel", {"uid": rel_id})

需要注意的是,参数需要作为字典传递,文档中没有提到。此外,{uid:{uid}}- 在查询的这一部分中,内部 uid 也是大括号,是一个应该在参数中传递的变量。但是外大括号是密码语法的一部分,因此 neomodel 代码不会将其视为变量。此外,无需在 . 周围添加引号{uid}

于 2019-07-22T10:10:47.283 回答