如何在 Gremlin 查询中检索从根顶点开始的所有顶点属性?
我们有以下结构:
根顶点:Employee
边:EdCompany、EdDepartment、EdRole
顶点:公司、部门、角色
我们正在尝试接收与根顶点连接的其他顶点的数据。有点像这样:
{
"employee": [
{
"id": "1",
"label": "Employee",
"type": "vertex",
"properties": { ... },
"company": {
"id": "A220",
"label": "Company",
"type": "vertex",
"properties": { ... },
},
"department": { ... },
"edge": { ... }
},
{ ... }
]
}
我们尝试过该查询,但返回一个复杂的 JSON:
g.V().hasLabel("Employee").inE().outV().tree()
编辑:
我们还尝试了 Kelvin 建议的查询:
g.V().hasLabel("Employee").inE().outV().tree().by(valueMap())
Stacktrace:
提交查询失败:gV().hasLabel("Employee").inE().outV().tree().by(valueMap()):服务器序列化错误:ActivityId:29f4b64e-c476-44b8-8e35 -a07dd31d4242 ExceptionType : GraphSerializeException ExceptionMessage : Gremlin 序列化错误: GraphSON V1_0 序列化程序无法将类型为 MapField 的对象序列化为原始值以执行所需的 Gremlin 步骤
如果您需要的只是从根开始的树,您只需by(valueMap())
在查询中添加 a 即可获取包含的属性。例如:
g.V().hasLabel("Employee").
inE().
outV().
tree().
by(valueMap())
我已经尝试过您的查询,但它不起作用。请检查我的编辑
您似乎正在使用 GraphSON V1 串行器 - 请尝试使用 V3 串行器或 GraphBinary 串行器。这不是查询。这是正在使用的序列化器。
我无法使用 V3,因为 Azure Cosmos DB + Gremlin 仅支持 V1/V2 序列化器。这种情况我能做什么?
我不确定 Cosmos 支持和不支持什么。您可以尝试仅使用单个属性键名称作为实验,而不是使用valueMap. 您是否尝试过 V2 序列化器以防万一?它支持 GraphBinary 吗?
我将尝试使用单个属性键,但是 V2 和 GraphBinary 不起作用。感谢您的支持