使用 Gremlin 递归查询更简单的树状结构

2023-12-02

考虑以下数据:

g.addV('RootTopic').property('name', 'A').as('A')
.addV('RootTopic').property('name', 'M').as('M')
.addV('Topic').property('name', 'A1').as('A1')
.addV('Topic').property('name', 'A2').as('A2')
.addV('Topic').property('name', 'B1').as('B1')
.addV('Topic').property('name', 'B2').as('B2')
.addV('Topic').property('name', 'N1').as('N1')
.addV('Topic').property('name', 'N2').as('N2')
.addV('Topic').property('name', 'O1').as('O1')
.addE('refines').from('A').to('A1')
.addE('refines').from('A').to('A2')
.addE('refines').from('A1').to('B1')
.addE('refines').from('A1').to('B2')
.addE('refines').from('M').to('N1')
.addE('refines').from('M').to('N2')
.addE('refines').from('N2').to('O1')
.addE('refines').from('N2').to('O2')

我想要的是人们通过使用获得的东西tree()-step:

g.V().hasLabel('RootTopic').repeat(out()).times(2).emit().tree()

然而,这会拉出完整的顶点。在这种情况下我真正需要的是顶点的属性,例如名称,这样我们就得到一棵包含例如只是顶点的名称属性。

我知道如果我写.tree().by('name')我似乎得到了一棵以名称作为键的树,但我正在尝试找到一种方法,允许我选择例如顶点的多个属性,或者例如只是具有某些特定元属性的某个属性。

这可能吗?


The by()调制器不仅仅可以采用属性键值作为参数。您还可以传入匿名遍历,从而允许:

g.V().hasLabel('RootTopic').
  repeat(out()).times(2).
    emit().
  tree()
    by(values('name','k1','k2').fold())

或者你可能会使用project()如果你有更复杂的输出:

g.V().hasLabel('RootTopic').
  repeat(out()).times(2).
    emit().
  tree()
    by(project('name','k1','degree').
         by('name').
         by('k1').
         by(both().count())

这里要讲的要点是,通过匿名遍历,您几乎可以开发任何您想要的输出。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Gremlin 递归查询更简单的树状结构 的相关文章

随机推荐

  • 如何在 PHP 中将此日期 (dd/mm/yyyy) 格式化为 (j M Y)? [关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 我正在尝试将此日期格式 在 PHP 中 dd mm yyyy 例如 18 08 2011
  • for循环中的if else语句?

    在我为学校做的项目的最后部分 我应该使用if else里面的声明for循环 但我不知道该怎么做 我可以使用大量if else声明做同样的事情 但我认为我的老师不会欣赏它 这是作业最后部分的说明 计算等级 A B C D 或 F 并存储在另一
  • ServiceStack - 如何禁用默认异常日志记录

    符合ServiceStack 文档 我们有一个全局服务异常处理程序 文档说这个处理程序应该记录异常然后调用DtoUtils HandleException 像这样 private object LogServiceException obj
  • 使用 selenium webdriver python 从共享点下载文件

    我正在尝试从 sharepoint url 下载文件并将代码写入neverask savetodisk但仍然显示保存文件的对话框 我尝试了相同的代码 当我们单击其他 URL 的下载链接但无法使用共享点应用程序时 它可以工作 这是我使用的代码
  • 桌面java应用程序通过USB复制和传输android数据

    我有一个桌面java应用程序 还有一个android应用程序 两个应用程序一起工作 桌面应用程序中的用户有一个按钮可以启动设备数据应用程序到计算机应用程序之间的传输 反之亦然 所以我需要用一根简单的USB线传输数据 而不需要互联网连接 Wi
  • R:在多个列中查找模式 - 可能是重复的()?

    我正在尝试隔离数据框中具有共同值的条目 请参阅下文以重建我的 df 的一部分 Stand lt c MY MY MY MY MY Plot lt c 12 12 12 12 12 StumpNumber lt c 1 2 3 3 7 Tre
  • 为什么在 MVVM 中使用命令

    我实际上正在学习 MVVM 模式 我无法理解有关命令的一件事 为什么要使用它们 为什么不只使用一个函数 在View 这调用了ViewModel的功能 给我们提供了什么命令 显然它们被广泛使用 但我找不到原因 为什么要使用命令 因为命令提供了
  • 如何使用 Python NetworkX 找到最长路径?

    我有一个从 S 到 T 的有向图 我想找到路线 S A C E T 及其容量之和 1 2 3 1 7 所以总和是最大的 我尝试了networkx algorithms flow ford fulkerson 但我不知道如何获得从S到T的单向
  • 带有命名参数的信号

    我正在尝试使用 PySide2 复制下面的示例 https evileg com en post 242 但由于 PySide2 不支持向 QML 发出带有命名参数的信号 我不知道如何使用 PySide2 来做到这一点 这是我的代码 mai
  • C++ 将指针传递给非静态成员函数

    大家好 我有一个关于函数指针的问题我的 回调 函数参数是 1 像这样的函数 int fx int int 2 一个int变量 int a3 另一个int int b好吧 问题是我想传递给 回调 的函数是一个非静态函数成员 并且有很多问题如果
  • 获取所有可能的值组合

    对于自动测试 我有一个包含约 15 个参数的类 我想为每个可能的值组合自动生成该类的实例 例如 如果类的定义如下 class meep def init self self par1 0 can be in range 0 3 self p
  • 为什么指定@charset“UTF-8”;在你的 CSS 文件中?

    我一直将这条指令视为已移交给我的众多 CSS 文件的第一行 charset UTF 8 它有什么作用 这通常是必要的吗 另外 如果我在 head 元素中包含此元标记 是否就无需将它也存在于我的 CSS 文件中 这在未告知每个 HTTP 标头
  • Websocket:发送超过 65535 字节的消息失败

    我从头开始用java开发了一个websocket服务器 javascript 客户端在浏览器中运行 function connectToServer connection new WebSocket ws document domain 8
  • wordpress - woocommerce - 从商店登陆页面删除面包屑

    我有 wordpress 和 woocommerce 我试图阻止面包屑显示在列出我在卫生间设置中设置为 商店页面 的类别的页面上 页面的 id 为 5 名称 slug 材料 在我的functions php中我已经放了 if is page
  • 批处理文件以 csv 形式列出文件路径和文件名

    我正在尝试制作一个批处理文件 列出文件夹和子目录中的所有文件 并导出到具有文件大小的 csv 我目前有 ECHO OFF SETLOCAL FOR f delims a IN dir s b a d DO FOR f tokens 1 9
  • 流行的 Big Buck Bunny mp4 视频中的“无法播放媒体。没有所需格式的解码器”

    我正在尝试使用媒体源播放我的视频 const videoTag document getElementById theVideoId const mimeCodec video mp4 codecs audioCodec videoCode
  • 使用 SwiftUI,有没有办法将视图的大小限制为另一个非同级视图?

    我正在摆弄一个视图布局 一个图表 我可以在其中看到我可以在全 SwiftUI 布局中走多远 每个组件都很好 但组装整体并不像我想要的那样工作 我发现我可以轻松地限制沿单个堆栈轴的大小调整 但不能同时限制两个轴 垂直和水平 我开始寻找对齐指南
  • Assetic 不创建组合链接

    只是在尝试让 Assetic 在渲染的网页中生成组合链接时遇到一些问题 文件本身生成得很好 但在生产环境的网页中 我继续看到单独的文件 URL 这在生产中不起作用 因为这些未组合的文件不可用 在模板中 我有 stylesheets TBun
  • 未定义函数 mysqli_stmt_init() php 错误

    我是使用 php mysqli 准备好的语句的新手 无论我尝试什么 我总是收到此错误消息 Fatal error Call to undefined function mysqli stmt init in etc 我已在代码中进一步关闭了
  • 使用 Gremlin 递归查询更简单的树状结构

    考虑以下数据 g addV RootTopic property name A as A addV RootTopic property name M as M addV Topic property name A1 as A1 addV