[英]Gremlin - Select vertices based on group keys
我有一個具有 2 個不同頂點類的圖,它們具有一些相同的屬性。
我需要:
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
的遍歷中
所以我試圖用稍微不同的方法來解決它。
每組將擁有顏色和材料組合的所有項目和產品
這樣,大部分工作將在您的第一個group
步驟中完成:
g.V().coalesce(
hasLabel("Item").has("price", P.inside(0, 10)),
hasLabel("Product").has("color").has("material")
).group()
.by(project("c", "m").by("color").by("material"))
.unfold()
.where(select(values).unfold().hasLabel("Item"))
.project("color", "material","price","product")
.by(select(keys).select("c"))
.by(select(keys).select("m"))
.by(select(values).unfold().hasLabel("Item").values("price").mean())
.by(select(values).unfold().hasLabel("Product").fold())
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.