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

使用Gremlin查询从由边连接的根顶点检索所有顶点

曾河
2023-03-14

如何在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())  

堆栈跟踪:提交查询失败:g.V().hasLabel(“Employee”).inE().outV().tree()。by(valueMap()):服务器序列化错误:ActivityId:29f4b64e-c476-44b8-8e35-a07dd31d4242异常类型:GraphSerializeException异常消息:Gremlin序列化错误:GraphSON V1\u 0序列化程序无法将类型为MapField的对象序列化为原始值以执行所需的Gremlin步骤

共有1个答案

卫诚
2023-03-14

如果您只需要根目录树,那么只需将(valueMap())添加到查询中即可获得包含的属性。例如:

g.V().hasLabel("Employee").
  inE().
  outV().
  tree().
    by(valueMap())
 类似资料:
  • 考虑上图。我想要一个小精灵查询,返回所有在它们之间有多条边的节点,如图所示。 该图是使用neo4j cypher查询获得的:MATCH(d:dest)-[r]-(n:cust),其中d,n,count(r)作为常用返回d,n,按常用描述极限5排序 例如:在RITUPRAKA…和Asia之间有8条多条边,因此查询返回了2个节点和边,对于其他节点也是如此。 注意:图中有其他节点,它们之间只有一条边,这

  • 我只是在玩Cosmos DB中的Graph API,它使用Gremlin语法进行查询。 我在图中有许多用户(顶点),每个用户对其他用户都有“知道”的属性。其中一些是外边缘(outE),另一些是内边缘(inE),具体取决于关系的创建方式。我现在尝试创建一个查询,该查询将返回给定用户(顶点)的所有“已知”关系。我可以通过以下方式轻松获取inE或outE的ID: 其中是我正在查询的用户的ID,但我无法提

  • Azure Cosmos DB中的Gremlin API允许我们在不同分区(p1、p2)中创建具有相同id(v1)的顶点。当我为一个分区(p1)中的顶点(v1)创建自边(e1)时,两个分区(p1的v1和p2的v2)中的顶点都创建了两条边。但实际上,p1的顶点(v1)只需要创建一条边。我使用gremlin版本3.4.10创建边。在Azure Portal中为顶点添加源和目标时,观察到了创建重复边的相

  • 小精灵:计算连接忽略边,在这个问题中,平行边在相反的方向,我想知道是否有方法找到从给定顶点以两种方式连接的顶点。我们知道重复数据消除()是为了避免重复。但是有没有办法找到具有平行边的顶点?

  • 我在我的应用程序中使用gremlin REST服务器,我想在单个查询中为一个顶点创建多个边。我有从哪里创建边缘到单个顶点的顶点ID列表。 对于eg-g.V(12,13,14,15)。添加(“使用”,g.V(100)) 我已经尝试了许多遍历步骤,但无法使其工作。

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