- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 OrientDB 中,每个顶点都有相连的边。这意味着可以使用嵌套的“select”语句从集合中显式遍历节点。
举个例子:给定一个节点属性的路径,找到匹配的结束节点。路径由节点属性列表组成(例如,kind
在路径中的节点中是唯一的)。
现在,假设我有一棵树:
kind=site, name=site1
-- kind=project, name=project1
-- kind=library, name=library1
kind=site, name=site2
-- kind=project, name=project2
-- kind=library, name=library1
用户想要来自名为 library1 的库的信息,路径为:
[{kind=site},{kind=project,name=project1},{kind=library,name=library1}]
只要结果是单个节点,就可以不让每个节点都完全符合遍历条件。
在 OrientDB 中,这个过程是:
这可以在嵌套的选择语句中完成。 kind 字段被索引,因此可以从大量对象中快速收集起始节点。为了进一步提高性能,我知道哪些表(集合)中有哪些类型,因此我可以限定要从中选择的对象的数量(从
在 ArrangoDB 中,只有边有节点绑定(bind)信息,所以有一个节点我不能直接穿过连接的边。在 GRAPH_TRAVERSAL 函数中,我可以通过示例指定起始集合。所以这个例子是{kind=site}。这是否意味着必须通过扫描所有图边来收集节点的起始列表,基本上是查看连接到整个图中每条边输入的每个节点?
如何制定这样的查询(在 AQL 和/或 arangojs 中),这样它就不必从对连接到边缘的对象进行全面扫描开始?
我也不知道如何将示例顶点发送到 arangojs 遍历函数。它似乎总是想要一个明确的起始顶点。
最佳答案
考虑到这样的工作,我们设计了新的 AQL graph traversal它将与 ArangoDB 2.8 一起发布(目前处于后期测试阶段)
关于您的最后一点,我们使用 named graphs 识别相关集合它知道图中的集合及其关系。因此,我假设您将使用命名图
。
让我们使用 one of the ArangoDB 2.8 Example graphs与 arangosh:
var examples = require("org/arangodb/graph-examples/example-graph.js");
var graph = examples.loadGraph("traversalGraph");
它的孔在 circles
集合中,它的边连接在 edges
集合中的顶点:
db.circles.toArray();
db.edges.toArray();
我们现在可以将 FILTER
语句与遍历深度结合使用,以在执行的早期修剪图分支的遍历。
这里我们过滤要在第一层遍历中找到的顶点的属性:
db._query("FOR v, e, p IN 1..3 " +
"OUTBOUND 'circles/A' " +
"GRAPH 'traversalGraph' " +
"FILTER p.vertices[1]._key != 'G' RETURN v._key");
我们也可以用类似的方式过滤边的属性:
db._query("FOR v, e, p IN 1..3 "
"OUTBOUND 'circles/A' " +
"GRAPH 'traversalGraph' " +
"FILTER p.edges[0].label != 'right_foo' RETURN v._key");
AQL graph traversal chapter也有深入的解释,遍历器以何种方式遍历图形。
关于ArangoDB通过节点属性高效遍历,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34727782/
相关文章:
node.js - 使用 arangojs 和 aqlQuery 在 ArangoDb 中使用集合名称作为变量时出错
graph - 类型错误 : Object #<ShapedJson> has no method 'indexOf'
node.js - 来自 node.js 应用程序的 ArangoDB 事务请求返回 403 : forbidden
arangodb - 在 ArangoDB 中的两个文档之间添加边缘
javascript - 在 arangojs 中配置 TLS 证书颁发机构
javascript - 使用 Arangodb 运行 Jest 测试时缺少模块
centos - 如何在 CentOS 中编译 ArangoDB 2.8 源代码?
你能比较一下属性吗 我想禁用文本框“txtName”。有两种方式 使用javascript,txtName.disabled = true 使用 ASP.NET, 哪种方法更好,为什么? 最佳答案 我
Count 属性 返回一个集合或 Dictionary 对象包含的项目数。只读。 object.Count object 可以是“应用于”列表中列出的任何集合或对
CompareMode 属性 设置并返回在 Dictionary 对象中比较字符串关键字的比较模式。 object.CompareMode[ = compare] 参数
Column 属性 只读属性,返回 TextStream 文件中当前字符位置的列号。 object.Column object 通常是 TextStream 对象的名称。
AvailableSpace 属性 返回指定的驱动器或网络共享对于用户的可用空间大小。 object.AvailableSpace object 应为 Drive 
Attributes 属性 设置或返回文件或文件夹的属性。可读写或只读(与属性有关)。 object.Attributes [= newattributes] 参数 object
AtEndOfStream 属性 如果文件指针位于 TextStream 文件末,则返回 True;否则如果不为只读则返回 False。 object.A
AtEndOfLine 属性 TextStream 文件中,如果文件指针指向行末标记,就返回 True;否则如果不是只读则返回 False。 object.AtEn
RootFolder 属性 返回一个 Folder 对象,表示指定驱动器的根文件夹。只读。 object.RootFolder object 应为 Dr
Path 属性 返回指定文件、文件夹或驱动器的路径。 object.Path object 应为 File、Folder 或 Drive 对象的名称。 说明 对于驱动器,路径不包含根目录。
ParentFolder 属性 返回指定文件或文件夹的父文件夹。只读。 object.ParentFolder object 应为 File 或 Folder 对象的名称。 说明 以下代码
Name 属性 设置或返回指定的文件或文件夹的名称。可读写。 object.Name [= newname] 参数 object 必选项。应为 File 或&
Line 属性 只读属性,返回 TextStream 文件中的当前行号。 object.Line object 通常是 TextStream 对象的名称。 说明 文件刚
Key 属性 在 Dictionary 对象中设置 key。 object.Key(key) = newkey 参数 object 必选项。通常是 Dictionary 
Item 属性 设置或返回 Dictionary 对象中指定的 key 对应的 item,或返回集合中基于指定的 key 的&
IsRootFolder 属性 如果指定的文件夹是根文件夹,返回 True;否则返回 False。 object.IsRootFolder object 应为&n
IsReady 属性 如果指定的驱动器就绪,返回 True;否则返回 False。 object.IsReady object 应为 Drive&nbs
FreeSpace 属性 返回指定的驱动器或网络共享对于用户的可用空间大小。只读。 object.FreeSpace object 应为 Drive 对象的名称。
FileSystem 属性 返回指定的驱动器使用的文件系统的类型。 object.FileSystem object 应为 Drive 对象的名称。 说明 可
Files 属性 返回由指定文件夹中所有 File 对象(包括隐藏文件和系统文件)组成的 Files 集合。 object.Files object&n
我是一名优秀的程序员,十分优秀!