我试图用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,
});
谢谢
1条答案
按热度按时间jtw3ybtb1#
如果
MERGE
可以并发生成,则可能导致重复节点,除非事先创建了唯一性约束,如下所示:引用MERGE文档:
在并发更新下,
MERGE
仅保证MERGE
模式的存在性,但不保证唯一性。要保证具有某些属性的节点的唯一性,应使用property uniqueness constraint。请参阅对MERGE
使用属性唯一性约束。