首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

基于边的数组过滤遍历Arangodb图

在ArangoDB中,可以使用AQL(ArangoDB查询语言)来遍历图并进行基于边的数组过滤。以下是一个示例,展示如何使用AQL遍历图并过滤边。

假设我们有一个图,其中包含两个集合:vertices(顶点)和edges(边)。edges集合中的每个文档都有一个type字段,我们希望仅遍历类型为friend的边。

步骤1:创建图和集合

首先,确保你已经创建了图和集合。例如:

代码语言:javascript
复制
db._createVertexCollection("vertices");
db._createEdgeCollection("edges");

db._createGraph("myGraph", {
  edgeDefinitions: [
    {
      collection: "edges",
      from: ["vertices"],
      to: ["vertices"]
    }
  ]
});

步骤2:插入一些示例数据

插入一些顶点和边数据:

代码语言:javascript
复制
db.vertices.save({ _key: "user1", name: "Alice" });
db.vertices.save({ _key: "user2", name: "Bob" });
db.vertices.save({ _key: "user3", name: "Charlie" });

db.edges.save({ _key: "edge1", _from: "vertices/user1", _to: "vertices/user2", type: "friend" });
db.edges.save({ _key: "edge2", _from: "vertices/user2", _to: "vertices/user3", type: "family" });
db.edges.save({ _key: "edge3", _from: "vertices/user1", _to: "vertices/user3", type: "friend" });

步骤3:使用AQL进行基于边的数组过滤遍历

使用AQL遍历图并过滤类型为friend的边:

代码语言:javascript
复制
FOR v, e, p IN 1..2 OUTBOUND 'vertices/user1' GRAPH 'myGraph'
  FILTER e.type == 'friend'
  RETURN { vertex: v, edge: e, path: p }

解释:

  • FOR v, e, p IN 1..2 OUTBOUND 'vertices/user1' GRAPH 'myGraph':从顶点user1开始,遍历最多2步的出边。
  • FILTER e.type == 'friend':过滤类型为friend的边。
  • RETURN { vertex: v, edge: e, path: p }:返回当前顶点、边和路径。

完整示例

以下是完整的AQL查询:

代码语言:javascript
复制
FOR v, e, p IN 1..2 OUTBOUND 'vertices/user1' GRAPH 'myGraph'
  FILTER e.type == 'friend'
  RETURN { vertex: v, edge: e, path: p }

运行此查询将返回从user1出发,类型为friend的边及其路径。

通过这种方式,你可以根据边的属性进行过滤,并遍历图中的相关顶点和边。根据你的具体需求,可以调整查询中的过滤条件和遍历深度。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的合辑

领券