首页
学习
活动
专区
工具
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,只有我这样子憨憨才会这样子做。。。

44920
  • 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

    储存方式,链式前向星最简单实现方式 (数组

    对于来说,储存方式无非就是邻接矩阵、邻接表,今天看了看链式前向星储存方式,说来说去不还是链表,是一种链表简单实现方式,还是比较好理解。...被坑不止一次,可能是非洲人 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)组成。...所以链式前向星,也是一种数组

    98820

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

    随着神经网络发展,将应用到协同过滤方法逐渐兴起。...这篇文章给大家介绍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比大多数最新方法具有更好性能。

    47410

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

    以上两者兼而有之:以最短路径方式遍历模板路径或组网查询、带方向或条件过滤模板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、数据库特别适用于查询 通过数据库可以非常容易实现“最短路径”和“图形遍历”。...而这些基本功能中涉及到对某个verticesoutgoing和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.8K20

    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,可以得到两个相邻用户。...结构对比损失显式挖掘了由交互定义邻居。

    84840

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

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

    1.5K20

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

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

    44410

    Graph Mining:审视世界眼睛

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

    1.8K10

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

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

    39910

    数据库综述与 Nebula 在数据库设计实践

    在这种场景里面,通常是对子计算或者遍历——这个和左边对全做计算是完全不一样:比如说从几个点出发,得到周边3、4度邻居构成一个子,再基于这个子进行计算,根据计算结果再继续做一些遍历。...例如在遍历过程中过滤、统计、排序、循环等等,再根据这些计算结果继续遍历。所以说业务需求越来越复杂。这就要求数据库提供功能越来越多。...对于原生产品,在设计时考虑了数据特性,存储、计算引擎都是基于特点做了特别设计和优化。 而对于多模产品,就有很多,比如说 ArangoDB 或者 Orientdb,还有一些云厂商服务。...nGQL 支持实时增删改、遍历、属性遍历,也支持对属性先做 index 再遍历。此外,你还可以对图上路径写个正则表达式,查找所有满足这个条件路径。...KV 好处在于遍历时,方便做出度和入度遍历

    2.7K50

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

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

    51710
    领券