我在公司里练习arangodb。当我想表达用户和用户之间的跟随关系时,我想在删除一个用户时删除相应跟随关系的数据。
用户收藏
{
"_key": "test4",
"_id": "users/test4",
"_rev": "_V8yGRra---"
},
{
"_key": "test2",
"_id": "users/test2",
"_rev": "_V8whISG---"
},
{
"_key": "test1",
"_id": "users/test1",
"_rev": "_V8whFQa---"
},
{
"_key": "test3",
"_id": "users/test3",
"_rev": "_V8yoFWO---",
"userKey": "test3"
}
关注收藏[edge]
{
"_key": "48754",
"_id": "follow/48754",
"_from": "users/test1",
"_to": "users/test2",
"_rev": "_V8wh4Xe---"
}
{
"_key": "57447",
"_id": "follow/57447",
"_from": "users/test2",
"_to": "users/test3",
"_rev": "_V8yHGQq---"
}
2条答案
按热度按时间wtlkbnrh1#
如果使用得当,ArangoDB系统可以确保命名图(GRAPHs)的完整性。
要在
follow
中手动删除一个特定的用户(比如“users/test 4”)和相应的边,沿着下面的行执行AQL查询就足以删除边:假设“users/test 4”没有在其他地方引用,则可以安全地删除节点,例如通过
这里重要的一点是,当手动删除节点时,所有相关的
edge
集合都必须被显式地标识和管理。fykwrbwg2#
首先,您应该创建一个图形与您的顶点和边集合。使用图形时,您可以使用REST API来移除顶点。这样,指向该顶点的所有边和顶点本身都将被删除。
您可以在https://docs.arangodb.com/3.11/develop/http/graphs/named-graphs/#remove-a-vertex中找到包含示例的文档
也可以使用AQL查询来实现这一点,例如从users集合中删除test1:
使用图遍历来获取指向test1的所有边的
_key
属性,然后将这些边从follow
集合中移除,并将test1从users
集合中移除。