В приведенном ниже примере:
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 and 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]
Итак, мне нужна полная вершина человека со всем ее содержимым и список всех ребер, которые приводят к сбою и ряби.
Представление 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
}]
}
]