【发布时间】:2018-06-20 16:17:48
【问题描述】:
举个例子:
marko = graph.addVertex(label, "person", id, 1, "name", "marko", "age", 29);
vadas = graph.addVertex(label, "person", id, 2, "name", "vadas", "age", 27);
josh = graph.addVertex(label, "person", id, 4, "name", "josh", "age", 32);
peter = graph.addVertex(label, "person", id, 5, "name", "peter", "age", 35);
lop = graph.addVertex(label, "software", id, 6, "name", "lop", "lang", "java");
ripple = graph.addVertex(label, "software", id, 7, "name", "ripple", "lang", "java");
tripple = graph.addVertex(label, "software", id, 8, "name", "tripple", "lang", "java");
marko.addEdge("created", lop, id, 9, "weight", 0.4f);
josh.addEdge("created", ripple, id, 10, "weight", 1.0f);
josh.addEdge("created", lop, id, 11, "weight", 0.4f);
peter.addEdge("created", lop, id, 12, "weight", 0.2f);
peter.addEdge("created", tripple, id, 13, "weight", 0.2f);
vadas.addEdge("created", tripple, id, 14, "weight", 0.2f);
我想从软件顶点lop和ripple开始,找到所有创建lop和ripple并且年龄超过32岁的人。然后我想按人分组,并在lop和ripple上创建权重。
所以我创造了一些东西,它给了我一个结果,但它看起来相当复杂:
g.V(6,7).as('soft').
in('created').has('age',gte(32)).
group()
by()
by(
outE().where(
inV().where(eq('soft'))
).fold())
.unfold()
==>v[4]=[e[11][4-created->6], e[10][4-created->7]]
==>v[5]=[e[12][5-created->6]]
另外,我希望最终结果具有与此类似的结构(对不起,如果我没有正确理解语法):
==>v[4,person,josh,32]=[lop=0.4, ripple=1.0]
==>v[5,person,peter,35]=[lop=0.2]
所以我需要完整的人顶点及其所有内容以及导致 lop 和波纹的所有边的列表。
json 表示形式如下:
[{
"id": 4,
"label": "person",
"name": "josh",
"age": "32",
"software": [{
"name": "lop",
"weigth": 0.4
},
{
"name": "ripple",
"weigth": 1.0
}
]
},
{
"id": 5,
"label": "person",
"name": "peter",
"age": "35",
"software": [{
"name": "lop",
"weigth": 0.2
}]
}
]
【问题讨论】:
标签: graph gremlin tinkerpop3