繁体   English   中英

TinkerPop multiple.by() 只返回 last.by() 值

[英]TinkerPop multiple .by() only returning the last .by() value

我将 Java 与 TinkerPop v. 3.5.1 与 Neptune DB 一起使用

我正在尝试使用.path().by("fieldName").by("otherFieldName")但我只从返回的最后一个.by("otherFieldName")中获取值,当我想要两者的值时.by()

这是一个示例图(在 gremlify 中生成):

g.addV('Student').as('1').
  property(single, 'name', 'Peter').
  property(single, 'age', 22).addV('School').
    as('2').
  property(single, 'name', 'Jefferson').
  property(single, 'address', '1234 Jefferson St.').
  addV('Administration').as('3').
  property(single, 'status', 'AFW').
  property(single, 'level', '4.2A').
  addV('Class').as('4').
  property(single, 'name', 'Math').
  property(single, 'level', 2).addV('ClassReq').
    as('5').
  property(single, 'name', 'Math').
  property(single, 'level', 1).addV('Student').
    as('6').
  property(single, 'name', 'Sam').
  property(single, 'age', 24).addV('Class').
    as('7').
  property(single, 'name', 'English').
  property(single, 'level', 2).addE('attends').
  from('1').to('2').addE('administers').
  from('3').to('2').addE('isReqsFor').from('5').
  to('4').addE('offers').from('2').to('4').
  addE('attends').from('6').to('2').
  addE('offers').from('2').to('7')

当我使用:

g.V().has("name", "Jefferson").out("offers").aggregate("x").by("level").by("name").cap("x")

我只得到返回的“名称”字段:

[
  [
    "English",
    1,
    "Math",
    1
  ]
]

另外,返回值中的1字段是什么? 起始节点(学校)中没有“级别”字段。 如果来自Class节点,则“级别”值都应为2

有没有办法返回顶点中多个字段的值?

我猜你是用 Gremlify 运行这些实验的(我认识 Gremlify 输出图表的方式),然后我看到了你关于使用它的评论。 该工具后处理来自 Gremlin 查询的 JSON 结果。 您所看到的是来自aggregate创建的 BulkSet 的“批量”计数。 如果您要在 TinkerGraph 或 Neptune 上运行相同的查询,您将看不到这1值。

无论如何,如果要聚合名称和级别,一种方法如下:

g.V().has("name", "Jefferson").
      out("offers").
      aggregate("x").by(values("level","name").fold()).
      cap("x")

其中(在海王星上)返回:

[[2, 'Math'], [2, 'English']]

by调制器以循环方式应用。 aggregate的情况下,每个“x”实例只需要一个值,因此使用最后一个by调制器。

我假设这是您正在处理的更大查询的一部分,因为实际上aggregate在给出的示例中没有增加任何values('name','level').fold() ,因为您可以在out()步骤。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM