Cosmos DB Gremlin“项目”未产生预期结果

时间:2018-08-23 13:06:51

标签: azure-cosmosdb gremlin

我有以下遍历,表明所选顶点有14个标记为“跟随”的边。

 g.V().has('user','email','me@email.com').project('name','email','follow-edges').by('name').by('email').by(outE().hasLabel('follows').project('id','inV').by('id').by('inV'))

会产生以下结果:

[{
"name": "David",
"email": "me@email.com",
"follow-edges": 14}]

但是当我想设计“跟随” Edge的ID和inV ID时,我只能得到一个结果项。

g.V().has('user','email','david@me.com').project('name','email','follow-edges').by('name').by('email').by(outE().hasLabel('follows').project('edge-id', 'inV-id').by('id').by('inV'))

结果:

[{
"name": "David",
"email": "me@email.com",
"follow-edges": {
  "edge-id": "ccc06183-f4ca-410d-9c3c-9d2dfd93f5f0",
  "inV-id": "f4703a07-f42d-46f9-86be-7f5440f07f12"
}}]

我期望获得所选顶点的所有“跟随”边的列表。与Stephen Mallette at this link给出的答案类似。

有人知道为什么这不起作用吗?

1 个答案:

答案 0 :(得分:1)

您需要减少by()中匿名遍历的对象流-请注意我添加的fold()

g.V().has('user','email','david@me.com').
  project('name','email','followedges').
    by('name').
    by('email').
    by(outE().hasLabel('follows').
       project('edge-id', 'inV-id').
         by('id').
         by('inV').fold())

我认为“ inV”是一个实际属性,并且您并不是要获取边缘的“顶点”。如果您要获取“顶点”,则需要by(inV().id())