如何在 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 不起作用。感谢您的支持