【发布时间】:2020-06-15 00:08:31
【问题描述】:
我尝试添加(如果它们不存在)2 个顶点,并在单个查询中添加从第一个到另一个的边。 它看起来像:
g.V().has("label1", "property1", "value1").fold().coalesce(
__.unfold(),
g.addV("label1").property("property1", "value1")
).as_("a").V().has("label2", "property2", "value2").fold().coalesce(
__.unfold(),
g.addV("label2").property("property2", value2)
).coalesce(
__.inE("link").where(__.outV().as_("a")),
__.addE("link").from_("a")
).next()
但由于fold() 充当屏障,它会删除我放在第一个顶点上的标签“a”。
我的解决方法如下:
g.V().has("label1", "property1", "value1").fold().coalesce(
__.unfold(),
g.addV("label1").property("property1", "value1")
).as_("a").V().has("label2", "property2", "value2").fold().coalesce(
__.unfold(),
g.addV("label2").property("property2", value2)
).coalesce(
__.inE("link").where(__.outV().has("label1", "property1", value1)),
__.addE("link").from_(__.V().has("label1", "property1", value1))
).next()
我可以做得更好吗?这……丑吗?
好的,store解决方案有效:)
但是我对最后一个合并的第一部分有疑问。
我这样做了:
g.V().has("label1", "property1", "value1").fold().coalesce(
__.unfold(),
g.addV("label1").property("property1", "value1")
).as_("a").V().has("label2", "property2", "value2").fold().coalesce(
__.unfold(),
g.addV("label2").property("property2", value2)
).coalesce(
__.inE("link").where(__.outV().where(within("a"))),
__.addE("link").from_(select("a").unfold())
).next()
感谢 Kelvin Lawrence,它运行良好 :)
【问题讨论】:
标签: graph gremlin tinkerpop amazon-neptune gremlinpython