当前位置: 首页 > 知识库问答 >
问题:

在源顶点上与Gremlin属性匹配的边后面

丁均
2023-03-14

我有一个图,我想沿着包含与顶点上的属性匹配的属性的边。例如。

vertex         -------edge ---------> vertex
vertValue: 123        vert: 123       vertValue: 463

所以在上面的情况下,假设我从第一个顶点开始,我想跟随属性“version”等于它的“vertValue”的边。

我已经使用进行了一个查询,其中能够跟踪边缘:

g.V(id).as('verts')
  .outE().values('vert')
  .where(eq('verts'))
    .by('vertValue')

问题是,我想返回实际的边缘对象。然而,当我需要在边的“vert”值上做“where”时,在查询中我正在做一个值(“vert”),所以我得到的结果只是我正在测试的值,而不是边对象。我想做以下事情:

g.V(id).as('verts')
  .outE()
  .where(eq('verts'))
    .by('vertValue','vert')

将顶点上的“vertValue”与边缘上的“vert”值进行比较。但我似乎找不到一种方法通过where的“输入”值来指定。

编辑:尝试:

g.V("95c4a57a-9262-45b7-a905-8cca95d3ebb6").as('v').
  outE().
  where(eq('v')).
    by('vert').
    by('vertValue')

返回错误:

Gremlin查询执行错误:选择一个:获取投影:提供的遍历或path()的属性名未映射到值。

g.V("95c4a57a-9262-45b7-a905-8cca95d3ebb6").as('v').
  outE().
  where(eq('v')).
    by('vertValue').
    by('vert')

返回一个空数组!

共有1个答案

龙高超
2023-03-14

你已经非常接近解决方案了。它是:

g.V(id).as('v').
  outE().
  where(eq('v')).
    by('vert').
    by('vertValue')
 类似资料:
  • 我需要从一个顶点开始,找到所有相关的顶点,直到结束。标准是匹配边inV顶点中的任何一个边属性(属性)。如果边缘属性“value”与inV顶点“attribute”名称不匹配,我应该跳过该顶点。边的属性值作为属性名称传播到inV顶点中 我使用下面的查询,但这给了我父节点、下一个节点和之间的边的json输出。通过输出am写入逻辑,仅拾取与边缘属性匹配的下一个属性。如果属性匹配可以通过gremlin查询

  • 在Gremlin/Tinkerpop中,我想在Vertex上执行版本更新。如果存在现有的Vertex,我只想在版本匹配版本号属性时对其进行修改。 下面是尝试使用执行此操作的代码。它无法创建顶点,稍后的查询无法找到它。 (此版本的先前版本有编译错误,但这是一个javscript主义未记录的语法问题) [更新]请参阅回答问题的评论。工作版本https://gist.github.com/pszabop

  • 我提出的问题与您在这里看到的几乎相同,但有一个约束条件,即必须使用groovy而不是java语法。理想情况下,答案应该非常简洁。 我有一个简单的人顶点图。每个人都有一个“年龄”属性,列出该人的年龄(以年为单位)。还有“worksFor”标记的边连接成对的人顶点。我希望看到所有边缘,边缘两端的人都具有相同的年龄属性。 然后我想问一个类似的问题,两个年龄相差不到3年。 如前所述,这应该是groovy语

  • 我一直在用PHP的SimpleXMLIterator处理XML数据。 在迭代一个子树(

  • 我有一个顶点上插工作和一个边缘上插工作在2个单独的遍历中。是否可以将2合并为1遍历?我尝试过,但收到错误。 a=自身g.V()。has('account',id',account-111111111').fold().coalesce(.unfold(),.addV('account').property(T.id,'account-111111111'))。has('customer','id'

  • 这里有一个非常简单的查询: 它的JSON输出是 现在,客户顶点还包含属性名称和年龄。我想了解的是,如何(简单地说,如果可能的话)形成我的小精灵查询,使其在图中嵌套顶点属性。注意,当我刚刚运行g.V(“customerId”)时,响应确实包含这些属性。