格林姆林:inject和has不能按预期工作

问题描述

我需要基于传递给inject()的列表创建不重复的顶点,该列表非常大,因此我需要使用inject()。我试过了,但是没用:

g.inject(["Macka","Pedro","Albert"]).unfold().map(
    coalesce(
        V().has("name",identity()),addV("user").property("name",identity())
    )
)

您可以在这里尝试: https://gremlify.com/765qiupxinw

为什么这不起作用? 似乎V()。has()返回了所有顶点,为什么?

解决方法

我认为在这种情况下,您应该使用where步而不是has

g.inject(["Macka","Pedro","Albert"]).unfold().as('n').map(
    coalesce(
        V().where(eq('n')).by('name').by(),addV("user").property("name",identity())
    )
)

示例:https://gremlify.com/06q0zxgd2uam