在 Neptune 的 OpenCypher 实现中模拟 MERGE

Simulate a MERGE in Neptune's OpenCypher implementation

我正在尝试 运行 使用他们的 new OpenCypher implementation but MERGE is not yet supported as a clause.

针对 AWS Neptune 数据库进行 MERGE 查询

有没有办法在 Neptune 的 OpenCypher 实现中不使用 MERGE 来获得 MERGE 的行为?

我希望可以这样做:

MATCH (ee:Person {name: "Sam"})

IF ee IS NULL THEN
  CREATE ...
ELSE
  SET ee += {...}
END

显然这只是伪代码,但是有没有什么方法可以在不在调用的应用程序中处理它的情况下实现这种行为?

openCypher 不提供强大的功能来执行您在伪代码中显示的查询中的逻辑类型。在 MERGE 成为 AWS Neptune 中受支持的子句之前,实现此功能的最佳方法是为此使用 Gremlin 模式,如 here 所述。 Neptune 提供了对存储在 Neptune 中的 属性 图形数据同时使用 openCypher 和 Gremlin(通过驱动程序或通过 HTTPS)的能力。对于你上面的伪代码,Gremlin 等价物看起来像这样:

g.V().
  has('Person', 'name', 'Sam').
  fold().
  coalesce(
    addV('NEW LABEL').property('propertyName', 'foo'),
    property('updateProperty', 'bar'))

更新 - 从 1.1.0.0 版本的 Amazon Neptune 开始,现在支持 MERGE 子句。