0

我正在使用 neo4j 4.3.2 版本。我有两个 json 文件。我想根据来自两个 json 文件的节点之间的匹配属性来匹配并创建从第一个 json 到第二个 json 文件的关系。请查看 json 文件:

第一个Json如下:

{"id":"123"}

第二个Json如下:

"member": [
    {
        "Authority": "xy",
        "Number": "999",
        "Code": "Z2",
        "Date": "1986-06-12",
        "Publication": "123"
    }]

我想将第一个json中具有属性“id”值123--->第二个json的所有节点与所有匹配属性“publication”值“123”进行匹配并将它们链接起来。

下面是我尝试过的代码,但是它显示“(没有更改,没有记录)”。为了使它正确,我在这里做了什么改变。希望提出宝贵的建议。

我尝试过的密码查询:加载第一个 Json

CALL apoc.load.json ("file:///D:/first.json") YIELD value AS data merge(a:LabelA{A:data.id})

加载第二个 Json

CALL apoc.load.json ("file:///D:/second.json") YIELD value AS dataFOREACH (idn IN data.member | MERGE(b:LabelB{Number:idn.Number})ON CREATE SET b.Publication=idn.Publication)

试图匹配并建立关系

create index on :LabelA(id);create index on :LabelB(Publication);MATCH (a:LabelA) 
MATCH(b:LabelB)WHERE b.Publication = a.id merge (a)-[:lin]->(b)     

它显示“(无更改,无记录)”

任何建议都会有很大帮助。

谢谢

4

1 回答 1

0

通常,您应该使用键而不是值来进行“匹配”,因此您可以使用哈希映射或哈希表,这非常快,但您可以执行以下操作:

a = {"id":"123"}


member = [
    {
        "Authority": "xy",
        "Number": "999",
        "Code": "Z2",
        "Date": "1986-06-12",
        "Publication": "123"
    }]

a["id"] in [member[0][key] for key in member[0]]

out[1]: True
于 2021-10-06T16:24:11.540 回答