У меня есть граф с 2 различными классами вершин с некоторыми идентичными свойствами.
Мне нужно:
- сгруппировать все вершины класса Item на основе некоторых свойств
- найти вершины класса Product, которые разделяют эти свойства
g.addV("Item").
property("color", "green").
property("material", "wood").
property("shape", "round").
property("price", 1.2).
addV("Item").
property("color", "green").
property("material", "wood").
property("shape", "round").
property("price", .9).
addV("Item").
property("color", "green").
property("material", "wood").
property("shape", "square").
property("price", 5).
addV("Product").
property("color", "green").
property("material", "wood").next();
До сих пор я пробовал это
g.V().has("Item", "price", P.inside(0, 10)).
group().
by(project("c", "m").
by("color").by("material")). //\1
local(unfold().
project("color", "material","price","product")
.by(select(Column.keys).select("c"))
.by(select(Column.keys).select("m"))
.by(select(Column.values).unfold().values("price").mean())
.by(
V().hasLabel("Product"). //\2
has("material",P.eq(select(Column.keys).select("c"))).fold()));
Я понимаю, что в 2
изменяется область действия, поэтому select(Column.keys)
больше не относится к группе. Тем не менее, я в растерянности, как получить значение ключа c
(и m
) в обход на 2