nodejs驱动程序上的Neo4J异常行为

5cnsuln7  于 2023-03-02  发布在  其他
关注(0)|答案(1)|浏览(159)

我试图用nodejs驱动程序在neo4j中创建一个简单的upsert/merge。
我一遍又一遍地发送相同的参数,创建了一个具有相同originId的新节点,我做错了什么?
我希望数据库中只有一个具有相同originId的节点...

const query = `MERGE (n:item {originId:$originId})
                  ON MATCH  SET
                        n.originId=$originId
                  ON CREATE
                     SET
                        n.originId=$originId,
                        n.searchTerm=$searchTerm,
                        n.subSearchTerm=$subSearchTerm,
                        n.licenseType=$licenseType,
                        n.location=$location
                  RETURN n
`;

        const res = await this.noe4jDriver.executeQuery(query, {
            originId: String(payload.data.id),
            searchTerm: payload.data.searchTerm,
            subSearchTerm: payload.data.subSearchTerm,
            licenseType: payload.data.licenseType,
            location: payload.data.location,
        });

谢谢

jtw3ybtb

jtw3ybtb1#

如果MERGE可以并发生成,则可能导致重复节点,除非事先创建了唯一性约束,如下所示:

CREATE CONSTRAINT FOR (i:item) REQUIRE i.originId IS UNIQUE;

引用MERGE文档:
在并发更新下,MERGE仅保证MERGE模式的存在性,但不保证唯一性。要保证具有某些属性的节点的唯一性,应使用property uniqueness constraint。请参阅对MERGE使用属性唯一性约束。

相关问题