需要一个 gremlin 查询,通过计数从顶点标签中总结边
need a gremlin query that summarizes edges by in out vertex labels by counts
使用 Cosmos DB Gremlin API,我正在尝试创建一个 gremlin 查询,该查询按顶点标签按计数汇总边
我能想到的最接近的事情不是进行重复数据删除的计数。任何帮助将不胜感激
g.E().project('edge','in','out').
by(label()).
by(inV().label()).
by(outV().label()).dedup()
输出
[
{
"edge": "uses",
"in": "software-system",
"out": "person"
},
{
"edge": "runs on",
"in": "container",
"out": "software-system"
},
{
"edge": "requires",
"in": "component",
"out": "container"
},
{
"edge": "embeds",
"in": "code",
"out": "component"
}
]
理想情况下
输出
[
{
"edge": "uses",
"in": "software-system",
"out": "person",
"count": 105
},
{
"edge": "runs on",
"in": "container",
"out": "software-system",
"count": 22
},
{
"edge": "requires",
"in": "component",
"out": "container",
"count": 15
},
{
"edge": "embeds",
"in": "code",
"out": "component",
"count": 6
}
]
我想我会结合使用 groupCount()
和 project()
:
gremlin> g.E().groupCount().
......1> by(project('edge','in','out').
......2> by(label).
......3> by(inV().label()).
......4> by(outV().label())).
......5> unfold()
==>{edge=created, in=software, out=person}=4
==>{edge=knows, in=person, out=person}=2
如果您的图形数据库不支持键作为映射,那么您可能需要进一步转换它:
gremlin> g.E().groupCount().
......1> by(project('edge','in','out').
......2> by(label).
......3> by(inV().label()).
......4> by(outV().label())).
......5> unfold().
......6> map(union(select(keys), select(values)).fold())
==>[[edge:created,in:software,out:person],4]
==>[[edge:knows,in:person,out:person],2]
使用 Cosmos DB Gremlin API,我正在尝试创建一个 gremlin 查询,该查询按顶点标签按计数汇总边
我能想到的最接近的事情不是进行重复数据删除的计数。任何帮助将不胜感激
g.E().project('edge','in','out').
by(label()).
by(inV().label()).
by(outV().label()).dedup()
输出
[
{
"edge": "uses",
"in": "software-system",
"out": "person"
},
{
"edge": "runs on",
"in": "container",
"out": "software-system"
},
{
"edge": "requires",
"in": "component",
"out": "container"
},
{
"edge": "embeds",
"in": "code",
"out": "component"
}
]
理想情况下 输出
[
{
"edge": "uses",
"in": "software-system",
"out": "person",
"count": 105
},
{
"edge": "runs on",
"in": "container",
"out": "software-system",
"count": 22
},
{
"edge": "requires",
"in": "component",
"out": "container",
"count": 15
},
{
"edge": "embeds",
"in": "code",
"out": "component",
"count": 6
}
]
我想我会结合使用 groupCount()
和 project()
:
gremlin> g.E().groupCount().
......1> by(project('edge','in','out').
......2> by(label).
......3> by(inV().label()).
......4> by(outV().label())).
......5> unfold()
==>{edge=created, in=software, out=person}=4
==>{edge=knows, in=person, out=person}=2
如果您的图形数据库不支持键作为映射,那么您可能需要进一步转换它:
gremlin> g.E().groupCount().
......1> by(project('edge','in','out').
......2> by(label).
......3> by(inV().label()).
......4> by(outV().label())).
......5> unfold().
......6> map(union(select(keys), select(values)).fold())
==>[[edge:created,in:software,out:person],4]
==>[[edge:knows,in:person,out:person],2]