gpt4 book ai didi

Gremlin 按最大属性过滤

转载 作者:行者123 更新时间:2023-12-04 04:09:49 27 4
gpt4 key购买 nike

gremlin 的新手,我一直无法按最大值过滤顶点。

简单的图表看起来像这样:

source.addV("x").property("id", "1").property("version", 1.0)
.addV("x").property("id", "1").property("version", 1.1)
.addV("x").property("id", "2").property("version", 1.0)

我的查询是这样的:

 source.V()
.has(T.label, "x")
.group()
.by("id").unfold().where(select(Column.values).unfold().values("version").max())

我正在寻找的输出是

[{type:x, id:1, version:1.1},{type:x, id:2, version:1.0}]

我的问题是它的 throw :

org.apache.tinkerpop.gremlin.driver.exception.ResponseException: {"requestId":"x","code":"InternalFailureException","detailedMessage":"null:select([null])"}

如有任何帮助,我们将不胜感激。谢谢。

最佳答案

这里发生了几件事。

首先,您要添加没有标签的顶点,虽然允许这样做,但这种做法并不常见。您通常希望通过顶点标签将相似的项目组合在一起。您可以通过将标签名称放在 addV() 步骤中来向您的遍历添加顶点标签,如下所示:

g.addV("labelname")

其次,您将版本属性添加为字符串而不是数字,这是我假设您真正想要的,因为字符串的 max() 并没有真正意义。要更改此设置,请删除版本号周围的引号,如下所示:

g.addV().property("type", "x").property("id", "1").property("version", 1.0)

第三,考虑这个问题的方式与您预期的有点不同。与其试图找到最大版本号并将所有遍历器与其进行比较,不如考虑这个问题的方式是“找到具有最高版本的顶点,然后对于每个顶点查看它的版本号是否相等”。绕过这个有点困难,但这里有一个遍历演示了如何做到这一点:

g.V().
order().
by('version', desc).
limit(1).as('b').
V().as('a').
where('a', eq('b')).
by('version')

关于Gremlin 按最大属性过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61924465/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com