在 Gremlin 中合并地图

2024-02-08

我正在尝试编写一个满足响应对象中两个要求的查询:

  1. 必须包括all顶点的属性,无需在查询中指定各个字段。

  2. 必须将结果展平到对象的同一水平上。

作为单独的查询,我可以这样做:

1. valueMap query

g.V(1)
.valueMap().by(unfold()).fold()

回复:

{
  "property1": "value1",
  "property2": "value2"
}

2. project query

g.V(1)
.project("projectedProperty")
.by(out("X").valueMap().by(unfold()).fold())

回复:

{
  "projectedProperty": "value",
}

组合查询

我尝试使用联合来组合这些结果:

g.V(1)
.union(
  valueMap().by(unfold()).fold(), // Query 1
  project("projectedField").by(out("X").valueMap().by(unfold()).fold()) // Query 2
).fold()

回复:

{
  [
    {
      "property1": "value1",
      "property2": "value2"
    },
    {
      "projectedProperty": "value"
    }
  ]
}

这种联合方法依赖于我在末尾放置一个折叠,这反过来又无法正确合并/展平两个地图。预期响应是:

{
  "property1": "value1",
  "property2": "value2",
  "projectedProperty": "value"
}

有没有更好的方法来完成合并/展平响应对象中的两个地图的任务?


典型的pattern http://tinkerpop.apache.org/docs/current/recipes/#collections is to unfold()然后你的映射到条目(键/值)group()他们重新合二为一:

gremlin> g.V().has('person','name','marko').
......1>   union(project('count').by(outE().count()), elementMap()).
......2>   unfold().
......3>   group().by(keys).by(select(values))
==>[count:3,name:marko,label:person,id:1,age:29]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Gremlin 中合并地图 的相关文章

随机推荐

  • 使用 EncryptedSharedPreferences 获取 KeyStoreException 和 GeneralSecurityException,我该如何解决这些问题?

    背景 在我开发的一个应用程序中 我将重要的内容 令牌 存储到 EncryptedSharedPreferences 中 取自here https developer android com jetpack androidx releases
  • 最长的链对

    你被给予n数字对 在每一对中 第一个数字总是小于第二个数字 一双 c d 可以按照 a b 当且仅当b小于c 可以以这种方式形成成对的链 找到形成的最长链对 我在接受亚马逊采访时遇到了这个问题 但无法找出答案 只是它与信息系统问题 http
  • 异步执行 CUDA 内存副本和 cuFFT

    我有一个 CUDA 程序 用于计算 FFT 比如说大小50000 目前 我将整个数组复制到 GPU 并执行 cuFFT 现在 我正在尝试优化程序 NVIDIA Visual Profiler 告诉我通过并行计算的并发来隐藏内存副本 我的问题
  • 如何解决“方法‘’没有重载需要 0 个参数”?

    我该如何修复这个错误 方法 输出 没有重载需要 0 个参数 错误位于 fresh output 的最底部 我不知道我做错了什么 有人可以告诉我应该做什么来修复代码吗 这是我的代码 using System using System Coll
  • 在 R 中高效计算 3d 数组的行和

    考虑数组a gt a lt array c 1 9 1 9 c 3 3 2 gt a 1 1 2 3 1 1 4 7 2 2 5 8 3 3 6 9 2 1 2 3 1 1 4 7 2 2 5 8 3 3 6 9 我们如何有效地计算由第三维
  • JS 传单:如何将 (Geo-)json ID 传递给单击事件?

    我的 django Web 应用程序应该执行以下操作 将 Geojson 对象传递到视图 使用传单映射点 并在用户单击点标记时显示一些附加信息 我对 js 不太熟悉 所以我陷入了将正确类型的数据绑定到click事件 这是一个示例 geojs
  • PHP 与 Pylons 的基准测试

    我想对 PHP 与 Pylons 进行基准测试 我希望两者的比较尽可能均匀 所以这就是我的想法 PHP 5 1 6 with APC 使用 smarty 模板连接到 MySQL 数据库 Python 2 6 1 使用带有 mako 模板的
  • 有没有办法在 GHCI 中查看模块中的函数列表?

    我发现在 Python 或 Common Lisp 中 您可以在运行时列出库的内容 这很方便 Haskell 是否有同样的东西 特别是在 GHCI 提示符下 GHCi 有一个 browse列出模块内容的命令 Prelude gt brows
  • 如何使用 %edit magic 打印我定义的对象的源代码

    Ipython 0 13 1 可以从 python 库打印对象的源 例如 os path abspath 但我无法打印我在 ipython 中通过 ed magic 定义的任何对象的源代码 我做错了什么吗 例如 我通过 ed 魔法定义一个类
  • 如何使用 UI 自动化(和/或 White)从外部应用程序获取控件的 DataContext

    我在用着White http white codeplex com 驱动 WPF 应用程序的 UI 到目前为止效果良好 然而 我现在需要深入研究被测应用程序的内部状态以检查某些条件 具体来说 我有一个 DataGrid 来自WPF工具包 h
  • TypeScript - 模块在运行时未定义

    我不明白我做错了什么 我在 VS2012 中创建了一个 TypeScript 项目 并在名为 Physics 的子目录中创建了一个名为 Vector ts 的文件 Module module Physics Class export cla
  • 如何在 SQL 表中查询数字 1 - 69 的所有可能的 5 个数字组合的逻辑有问题

    编辑 只是为了澄清一下 结果的顺序仅重要于 1 2 3 4 5 和 5 4 3 2 1 应该是相同的记录 所以我正在寻找不同的组合 我希望建立一个 SQL 数据库 其中包含数字 1 69 的所有可能的 5 个数字组合 其中相同的数字不能在单
  • 如何在android中对VideoView进行放大/缩小?

    我正在使用 VideoView 并从资源中运行视频 我想知道 有什么方法可以对正在运行的视频执行放大 缩小功能吗 好的 我遇到了这个问题 并通过删除 VideoView 并将其替换为纹理视图 http developer android c
  • 有没有 javascript LaTeX 方程渲染器? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个纯粹的客户端 JavaScript 库 它将乳胶方程呈现为 HTML CSS 我讨厌我看
  • 如何实现检测一个视图被拖动到另一个视图上?

    我想要一个可拖动视图 同时能够不断监视到 目标 视图的距离 并检测何时将可拖动视图拖动到目标视图上 我的想法是得到Rect s两种视图并使用intersect 检查它们是否接触 然而 我的实现工作并不顺利 有时它会检测到错误位置的重叠或未检
  • 将目录添加到 PyCharm 中的 Python 路径?

    我希望能够使用paraview simplePyCharm 中的库 我的电脑中已经安装了 paraview 该软件包无法安装pip据我所知 没有 whl 文件 网站docs https www paraview org ParaView D
  • PHP:使用 php 裁剪时出现黑色图像

    我设置了一个上传 jpeg 的脚本 然后将其裁剪为缩略图 但有些用户遇到黑色图像 老实说我不知道 他们上传的是什么 也许是压缩格式与 php 库不兼容的 jpeg 这是我的简单代码 当我尝试使用我的照片时一切正常 所以我无法理解为什么有些用
  • 如何在不同主机上向 eureka-server 注册 eureka-clients。弹簧启动

    我正在本地主机上运行我的尤里卡服务器 我能够在本地主机上注册所有其他正在运行的服务 并且一切都按预期进行 现在我想注册一个在Linux机器上运行的服务 我的属性看起来像这样 spring application name myService
  • Babel 6 更改了默认导出方式

    之前 babel 会添加以下行module exports exports default 它不再这样做了 这意味着在我能做之前 var foo require foo use foo 现在我必须这样做 var foo require fo
  • 在 Gremlin 中合并地图

    我正在尝试编写一个满足响应对象中两个要求的查询 必须包括all顶点的属性 无需在查询中指定各个字段 必须将结果展平到对象的同一水平上 作为单独的查询 我可以这样做 1 valueMap query g V 1 valueMap by unf