Neo4j 不会创建或更新节点之间的关系
我的数据库中有两种类型的节点:BOOK和writer 这两个节点具有名为“id”的id属性:Neo4j 不会创建或更新节点之间的关系,neo4j,cypher,Neo4j,Cypher,我的数据库中有两种类型的节点:BOOK和writer 这两个节点具有名为“id”的id属性: { "identity": 20220, "labels": [ "WRITTER" ], "properties": { "title": "Eliott", "id": "Eliott" } } { &quo
{
"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)展开,其中与上面相同合并与上面相同”