首页
学习
活动
专区
工具
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的边及其路径。

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

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

相关·内容

P3916 图的遍历【反向建边 + DFS】

https://www.luogu.com.cn/problem/P3916 题目描述 给出NN个点,MM条边的有向图,对于每个点vv,求A(v)A(v)表示从点vv出发,能到达的编号最大的点。...M \le 10^31≤N.M≤103; • 对于100% 的数据,1 \le N , M \le 10^51≤N,M≤105。 题解:反向建边,再进行搜索。...例如题目中,反向建边后是:2->1,4->2,3->4,从大到小开始DFS。...(反向建边后,如果遍历该节点连接的边,即能够到达的地方,比如e[4] 里面存储了2,那么2一定能到达4,如果之后遍历3,2,1的时候,一定也不会比4大。关键是从大到小进行了遍历。)...这样子如果当前点的ans[ ]有数值了,就说明已经遍历过了,而且肯定比当前要大,就不需要再继续遍历下去。 碎碎念:正常建边,然后跑DFS,一大半样例会TLE,只有我这样子的憨憨才会这样子做。。。

45720
  • ArangoDB 系列(1) —— 初识 ArnagoDB

    集合管理命令 集合相关方法 图数据库 AQL 语句执行 ArangoDB 的 AQL 语法 插入数据 修改语句 删除语句 查询语句 图的遍历查询 前置知识 ArangoDB 的特性 灵活的数据类型,...支持键值对、文档和图(用于保存社会关系) 在运行对文档或者集合的查询时,能够有选择保持事务的一致性和隔离性 具备复制与分片功能,能够对数据库进行失败配置,并且可以将大数据集分布在多个服务器上 可配置的持久性..._create("Characters") # 创建边的集合 db...._collection("Characters").drop() 图数据库 # 创建顶点集合 db._create("vertex"); # 创建边集合 db....c.surname, c.name LIMIT 10 RETURN { surname: c.surname, name: c.name } 图的遍历查询

    2K20

    基于图的去中心化社会推荐过滤器

    由于这些社会关系可以轻松地用图结构数据来表示,因此图神经网络在这一领域具有很大的发展潜力。然而,现有的基于图的算法在处理数据时往往忽略了用户或事件的偏好偏移量。...具体做法是,他们对原始图进行去中心化处理,然后从中学习到用户和事件的表征。去中心化的图是基于原始图中的统计信息生成的。...接着,作者提出了一种用户-用户之间社会关系的建模方式,并将其融入到预测规则中,以提高推荐表现。 然后,基于去中心化图,他们提出了一种基于图神经网络(GNN)的社会推荐协同过滤模型。...去中心化图(decentralized graph) 去中心化图有三种不同的边:用户-事件、事件-用户、用户-用户。...对于每个用户-事件交互的边,用原始权重减去所有权重的平均值得到新的权重,而用户-用户连线的权重保持不变。通过这种方式,作者将统计信息融入到图中。

    6910

    图的储存方式,链式前向星最简单实现方式 (边集数组)

    对于图来说,储存方式无非就是邻接矩阵、邻接表,今天看了看链式前向星的储存方式,说来说去不还是链表,是一种链表的简单的实现方式,还是比较好理解的。...被坑不止一次,可能是非洲人 int tot=0;//图储存空间的假指针 int head[maxn];//表头,用于存图的的左端点 int next[maxn*100];//链式前向星的精髓,对于一个左端点他的右端点...,例如最短路松弛操作 } for(int i=head[x];i;i=next[i]) //遍历以X为左端点的边 { int L=x; // 左端点 int R=ver[i];...【边集数组】 边集数组是由两个一维数组构成,一个是存储顶点的信息,另一个是存储边的信息,这个边数组每个数据元素由一条边的起点下标(begin),终点下标(end)和权(weight)组成。...所以链式前向星,也是一种边集数组。

    1K20

    推荐系统大杀器——基于图学习的协同过滤

    随着图神经网络的发展,将图应用到协同过滤的方法逐渐兴起。...这篇文章给大家介绍3篇基础的基于图的协同过滤方法,分别来自SIGIR2019、SIGIR2020、SIGIR2022,这3篇工作是递进的关系,展现了如何将图模型更合理的应用到推荐系统的协同过滤中。...(SIGIR 2022)又提出了基于之前图学习协同过滤的优化,这篇文章更加细致了分析基于图的协同过滤的工作原理,并提出如何从图学习生成的特征中提取对预测最重要的信息。...上面的实验说明,基于图的协同过滤中,只有一小部分特别rough或特别smooth的特征对最终预测是有效的,其他特征可以理解为噪声。...4 总结 本文介绍了3篇基于图的协同过滤方法,体现了图学习应用到协同过滤的发展过程。整个过程是在构建更适合协同过滤的图网络,通过大量的实验分析之前图学习在协同过滤中存在的问题,不断进行优化和简化。

    1.2K30

    FourierKAN-GCF: 基于KAN网络的图协同过滤方法

    TLDR: 受前段时间大火的KAN网络的启发,本文提出一种基于FourierKAN的图协同过滤推荐模型,将图卷积网络中的MLP模型替换为KAN模型,以此来提高模型的性能和训练效率。...论文:https://arxiv.org/pdf/2406.01034 代码:https://github.com/Jinfeng-Xu/FKAN-GCF 图协同过滤(GCF)在推荐任务中取得了优越的性能...重新审视这两个组件,发现GCN中消息传递过程中的一部分特征变换和非线性操作可以提高GCF的表示能力,但增加了训练的难度。 基于此,本文提出了一种简单有效的基于图的推荐模型FourierKAN-GCF。...具体地,利用一种新型的傅里叶Kolmogorov-Arnold网络(KAN)代替多层感知器(MLP)作为GCN中消息传递过程中特征变换的一部分,提高了GCF的表示能力,且易于训练。...本文进一步采用消息丢弃和节点丢弃策略来提高模型的表示能力和鲁棒性。 在两个公开数据集上的实验表明,FourierKANGCF比大多数最新方法具有更好的性能。

    56910

    如何去伪存真地看懂一份图数据库的评测报告?

    以上两者兼而有之:以最短路径方式遍历的模板路径或组网查询、带方向或条件过滤的模板K邻查询、定制化的图算法等。 配图1中展示了BFS与DFS之间的差异。...这个特征区别于金融行业中的交易流水图——无论是顶点还是边都可能存在多个属性,可以被用来对实体或关系进行精准的查询过滤、筛选、排序、聚合运算、下钻、归因分析等。...不支持点边属性过滤的图数据库可以认为功能没有实现闭环,也不具备商业化价值。 图2 单边图 vs....为了更精准地验证结果正确性,对K邻查询还可以按照边的方向来进行过滤,例如只查询顶点“2796015”的出边、入边或者双向边(注:默认是查询双向边关联的全部邻居)。...图10 Tigergraph的仅进行单向遍历的错误的2nd-Hop结果 遗憾的是,Tigergraph的查询结果错误问题在今天的图数据库市场并不是个例,我们在Neo4j、ArangoDB等系统中也发现因底层实现或接口调用等问题而出现的错误

    1.1K30

    【详解】图数据库 | 灵活存储复杂关联关系

    边(edge):又被称为关系(relationships),具有名字和方向,从一个节点指向另一个节点,边是图数据库中最显著的一个特征,在RDBMS中没有对应实现。...属性(properties):类似KV数据库中的键值对,节点和边都可以有属性。 图数据库将数据以属性方式存储在节点或边中,以边来表示节点之间的关系,并用特定查询语言,进行数据检索。 ?...到2010年后,可支持水平扩展的分布式图数据库开始兴起,例如OrientDB,ArangoDB,MarkLogic。...图数据库真正的价值,是灵活存储复杂关联关系,在深度超过1层以上关系中查找遍历,或是基于复杂算法的实时数据关系挖掘。...JanusGraph是基于Titan图数据库延续下来的开源项目,由Linux Foundation进行维护。

    4.1K20

    多数据模型数据库 | 应用实例解析

    >>>> 写在前面 声明:本文大部分是基于ArangoDB的论文的翻译,在翻译过程中加入了自己的一些理解和说明。...vertices - 所有vertices都可以通过edge,按照edge的方向遍历到,这是典型的图遍历。...上面所示的遍历只需要图形名称“FleetGraph”,起始vertices,以及边的方向:OUTBOUND,这三个条件就可以得到所需要查询的数据,AQL可以支持这种类型的图查询。...3、图数据库特别适用于图查询 通过图数据库可以非常容易的实现“最短路径”和“图形遍历”。...而这些的基本功能中涉及到的对某个vertices的outgoing和incoming的边的反复频繁遍历,均由图数据库为你实现,你使用的只是这些基本功能的接口,而不需要关注底层实现细节。

    1.9K10

    如何在Ubuntu 14.04上安装和使用ArangoDB

    创建文档 在基于SQL的数据库中有行的地方,ArangoDB有文档。ArangoDB中的文档是JSON对象。每个文档与集合相关联,并有三个核心属性:_id,_rev,和_key。...此外,特定集合的集合概述页面允许您导出和导入数据,管理索引以及过滤文档。 如前所述,Web界面有很多可供选择。涵盖每个功能都超出了本教程,因此您可以自己探索其他功能。...此查询已经是AQL如何工作的一个很好的示例:您使用FOR遍历每个文档列表并对其执行操作。该列表可以是包含JSON对象的数组或数据库中的任何集合。..._key } ) REPLACE song WITH song_with_album_ref IN songs 我们首先遍历所有专辑,然后查找与此专辑相关联的所有歌曲。...它允许您将数据建模为有向图中的顶点。可以将关系建模为这些顶点之间的边而不是使用_key引用。以这种方式对数据建模可以比SQL数据库中使用的关系方法更有好处。

    2.7K00

    探索图数据库在数据资产可视化中的应用

    adjacency,擅长遍历图,以及计算不存在大量关系的节点的图 ArangoDB ArangoDB图数据库,它是一个原生多模型数据库,兼有key/value键/值对、graph图和document文档数据模型...易于理解,更加敏捷 相对于关系型数据库的二维表格,图的组织形式更接近于现实世界,易于理解 可以很自然的表达现实世界中的实体及其关联关系(对应图的顶点及边) 关系型数据库在遍历关系网络并抽取信息的能力非常弱...在图数据的操作抽象上,采用基于顶点的视角,比如顶点通过其所有处、边访问其邻接顶点,这一类的操作也是图数据库系统设计的核心。...而在图数据库里,仅需添加新的顶点、边、属性,设置为对应的类型即可。...所以Atlas读写数据的过程可以看作就是将图数据库对象映射成Java类的过程,基本流程如下: 在Atlas中查询某一个元数据对象时往往需要遍历图数据库中的多个顶点与边,相比关系型数据库直接查询一行数据要复杂的多

    1.9K20

    2018-11-20 CG Pipeline: 最佳图数据库性能对比--为您的CG生产数据服务

    的内部语言执行请求 Neo4j 功能齐全,速度敏捷,还有强大的查询语言及另外许多功能,可以满足使用图数据库的最常使用场景。...API ArangoDB 的图形存储基于其自己的文档存储系统, 每个顶点都作为json条目存储在一个集合中 查询可进行配置(例如,您可以选择深度优先遍历)ArangoDB 提供了一个遍历对象,允许您构建特定的路径...,还有其他的助手,如最短路径查找或路径长度检索,可以满足图形查询的大部分需求 查询结果记录易于显示和分析 ArangoDB 和Python 客户端很容易理解,而且文档编制完善 在ArangoDB Web...UI中可视化您的图形, 使数据存储更容易 其开发公司非常活跃,并提供很多的额外支持项目 1.如果想用自己的脚本实现同等性,需要自己编写“获取或创建”方法 还是一个年轻的数据库 ArangoDB 是开发者和用户最友好的数据库...,我们未对其进行测试 在CG生产环境中使用有风险 结论: ArangoDB 是我们这组测试中最喜欢的数据库,如果正在考虑使用图形数据库,建议首选测试ArangoDB。

    1.5K20

    WWW22 | 推荐系统:基于邻域关系的对比学习改进图协同过滤

    基于交互矩阵可以构建图 \mathcal{G}=\{\mathcal{E,V}\} ,节点集合 \mathcal{V}=\{U \cup I\} ,边 \mathcal{E} 表示用户节点和商品节点存在交互...一般协同过滤中的GNN过程可以包括两部分,信息传播和表征聚合,公式如下, \begin{aligned} z_{u}^{(l)} &=f_{\text {propagate }}\left(\left\...方法 NCL的总体框架 3.1 结构邻居的对比学习 现有的图协同过滤模型主要是通过观察到的交互(例如,用户-商品对)来训练的,而用户或商品之间的潜在关系不能通过从观察到的数据中学习来明确地捕获。...交互图 G 是一个二分图,基于 GNN 的模型在图上的偶数次信息传播自然地聚合了同构结构邻居的信息,这便于提取用户或商品内的潜在邻居,如u-i-u,可以得到两个相邻的用户。...结构对比损失显式挖掘了由交互图定义的邻居。

    86640

    图数据技术调研以及业务实践

    此类图数据库在现有存储系统之上新增了通用的图语义解释层,图语义层提供了图遍历的能力,但是受到存储层或者架构限制,不支持完整的计算下推,多跳遍历的性能较差,很难满足 OLTP 场景下对低延时的要求,即不满足选型要求...此类图数据库根据图数据的特点对数据存储模型、点边分布、执行引擎进行了全新设计,对图的多跳遍历进行了深度优化,基本满足我们的选型要求。...DGraph 是由前 Google员工 Manish Rai Jain 离职创业后,在 2016 年推出的图数据库产品,底层数据模型是 RDF(实际上也是属性图差不多),基于 Go 语言编写,存储引擎基于...Block 不存储 uid 本身,而是存储当前 uid 和上一个 uid 的差值。这个方法产生的压缩比是 10。 Dgraph 的存储方式非常有利于连接和遍历,一个边遍历只需要一个 KV 查询。...由于使用了函数 anyofterms,所以求这两个 uidlist 的并集,得到一个更大 uidlist。 同查询遍历步骤。 过滤 过滤是查询语句的主要成分之一。过滤条件也是由函数组成的。

    49110

    Graph Mining:审视世界的眼睛

    图数据库的热门选项[6]主要是Neo4j[7],OrientDB[8]和ArangoDB[9]等,这三家公司在2018年还因为ArangoDB搞的Benchmark的问题来回交锋多次[10][11],大家感兴趣的话可以自己去翻阅...该算法的时间复杂度是O(V + E),V是节点数量,E是边的数量。下面这个图就存在三个连通子图(Component)。 ?...图 4.5 Louvain算法中的关键两个步骤 Louvain算法主要分为两个步骤: 在第一个阶段中,该算法遍历网络中的每个节点。对于每个节点,将其从当前社区中移除,并替换它到其邻居的社区中。...在每一轮迭代中,通过将第一阶段(社区重新分配阶段)应用于粗粒度图,我们发现了基于粗粒度图的第二层社区,粗粒度图的每个节点其实上一轮的一个社区。...2图评估类算法 图的度量方式有很多种[39][40],笔者比较喜欢SparklingGraph[41]针对应用对象的评估类别进行划分,分别是对节点,边和图进行评估,更加实用。

    1.8K10

    2021-02-26:一个数组arr是二叉树的中序遍历结果,每条边的开销是父节...

    2021-02-26:一个数组arr是二叉树的中序遍历结果,每条边的开销是父节点和子节点的乘积,总开销是所有边的开销之和。请问最小总开销是多少?...定义二叉树每条边的开销为其两端节点权值的乘积,二叉树的总开销即每条边的开销之和。小团按照二叉树的中序遍历依次记录下每个节点的权值,即他记录下了N个数,第i个数表示位于中序遍历第i个位置的节点的权值。...之后由于某种原因,小团遗忘了二叉树的具体结构。在所有可能的二叉树中,总开销最小的二叉树被称为最优二叉树。现在,小团请小美求出最优二叉树的总开销。...输入描述: 第一行输入一个整数N(1的节点数。 第二行输入N个由空格隔开的整数,表示按中序遍历记录下的各个节点的权值,所有权值均为不超过1000的正整数。...输出描述: 输出一个整数,表示最优二叉树的总开销。 福哥答案2021-02-26: 自然智慧即可。 1.递归。有代码。 2.记忆化搜索。有代码。

    51910

    蚂蚁图团队开源高性能原生图存储系统CStore

    作者:唐浩栋 CStore是一款专门为图分析场景而设计的原生图存储引擎,它采用了Rust语言编写,使用基于图的存储结构,针对图分析场景进行特定优化。...根据图数据存储方式的不同,现有的图存储引擎主要分为下面几大类: 基于链表,例如Neo4j。 基于Hash+链表,例如ArangoDB。...CStore基于属性图来建模,属性图是由点,边,以及点和边上的属性组成的图,点数据中记录了起始点ID和图元数据(标签,时间戳),边数据记录了起始点ID和图元数据(终点ID,方向,标签,时间戳),每个起始点...这样编码有两点好处: 点边数据变成CStore内部具有固定格式的二进制数据,有效减少内存消耗,方便后续数据写入磁盘; 图元数据被压缩到8字节,这样可以把更多的图信息放到索引侧,能够提前在索引侧过滤掉用户不需要的数据...点边数据的访问频率在不同的场景有所不同,分离存储能够进一步优化数据访问性能,提前过滤掉不需要的数据,减少数据读放大。

    43410
    领券