我的业务问题与-Gremlin filter by count类似 ,但是我正在OrientDB 3.0.16上运行
此查询:
g.V().hasLabel('skill').
groupCount()
按预期从OrientDB返回:
{
"result": [
{
"com": 1,
"netcompactframework": 1,
"netremoting": 2,
"netframework": 3,
"net": 1,
"netclr": 1
}
],
"elapsedMs": 18
}
我尝试应用展开以及之后的过滤器:
g.V().hasLabel('skill').
groupCount().
unfold().
where(select(values).is(gt(1)))
但是我得到一个错误:
{
"errors": [
{
"reason": 501,
"code": 501,
"content": "java.lang.UnsupportedOperationException: Cannot convert netremoting=2 - class java.util.HashMap$Node to JSON"
}
]
}
由于OrientDB试图将地图条目字符串转换为JSON并失败,因此unfold()似乎有问题
有什么想法吗? 这是OrientDB的特定问题吗?也许还有另一种方法可以在gremlin中执行相同的逻辑?
答案 0 :(得分:0)
这看起来像是某种序列化错误,但我不确定您正在设法解决该问题的情况。当您unfold()
和Map
转换为Java Map.Entry
并返回时,对于串行器来说,这似乎是一个问题,它遇到内部类HashMap$Node
。我认为您可以通过退回到Map
来解决此问题:
g.V().hasLabel('skill').
groupCount().
unfold().
where(select(values).is(gt(1))).
group().
by(keys).
by(select(values))
我很想知道是什么情况导致您遇到该错误。 Gremlin Server中的标准GraphSON序列化程序应该能够处理HashMap$Node
,因此很好奇您根本会遇到此问题。