Neo4j 不会创建或更新节点之间的关系

Neo4j 不会创建或更新节点之间的关系,neo4j,cypher,Neo4j,Cypher,我的数据库中有两种类型的节点:BOOK和writer 这两个节点具有名为“id”的id属性: { "identity": 20220, "labels": [ "WRITTER" ], "properties": { "title": "Eliott", "id": "Eliott" } } { &quo

我的数据库中有两种类型的节点:BOOK和writer

这两个节点具有名为“id”的id属性:

{
  "identity": 20220,
  "labels": [
    "WRITTER"
  ],
  "properties": {
"title": "Eliott",
"id": "Eliott"
  }
}

{
  "identity": 1,
  "labels": [
    "BOOK"
  ],
  "properties": {
"title_book": "book_1",
"id": 2
  }
}
我想知道他们之间的关系。我有一个数据框,其中每一行表示源id(writer节点)和目标id(BOOK节点)

数据帧df_关系如下所示:

bookid writterid
1      'James'
2      'Eliott'
我试过了,但什么也没发生:

request = """
UNWIND $data as row
MATCH (b:BOOK), (w:WRITTER)
WHERE b.id = row.bookid AND w.id= row.writterid
MERGE (w)-[:HAS_WRITTEN]->(b)
"""
params = list()
for i, row in df_relationships.iterrows():
    params.append({'id':row.bookid, 'id':row.writterid})
    if i % 5000 == 0:
        session.run(request , {'data':params})
        params = []
session.run(request , {'data':params})

我看不到任何错误

尝试使用创建它将创建关系

CREATE (w)-[:HAS_WRITTEN]->(b)

params
只有键
id
,但是您可以在密码中查找
bookid
writerid
。也许试一下

params.append({'bookid':row.bookid, 'writterid':row.writterid})

您好,我尝试过,但没有任何更改
MERGE
如果不存在,则会创建模式,因此
MERGE
在这里很好
其中b.id=row.bookid和w.id=row.writerId
将此替换为
其中id(b)=row.bookid和id(w)=row.writerId
谢谢@aldrin,这是我犯的错误之一。我也改变了这一点:“将$data作为行匹配(b:BOOK),(w:writer)展开,其中与上面相同合并与上面相同”