Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Neo4j将多个值存储为属性并基于该属性匹配节点_Neo4j_Cypher - Fatal编程技术网

Neo4j将多个值存储为属性并基于该属性匹配节点

Neo4j将多个值存储为属性并基于该属性匹配节点,neo4j,cypher,Neo4j,Cypher,我有一个标签Person,其中节点具有某些属性(姓名、姓氏等),我有一个标签Company,其中节点具有某些属性(姓名、公司编号等)。现在,我需要将propertycompNumber添加到person节点,该节点将指示此人在哪些公司工作。 我的问题是:例如,有没有一种方法可以在属性compNumber中放入多个值 (:Person {forename:John, surname'Smith', compNumber:[001,002,003]}) 如果companyNumber节点中的属性c

我有一个标签
Person
,其中节点具有某些属性(姓名、姓氏等),我有一个标签
Company
,其中节点具有某些属性(姓名、公司编号等)。现在,我需要将property
compNumber
添加到person节点,该节点将指示此人在哪些公司工作。 我的问题是:例如,有没有一种方法可以在属性compNumber中放入多个值

(:Person {forename:John, surname'Smith', compNumber:[001,002,003]})
如果
companyNumber
节点中的属性
companyNumber
compNumber
属性中的一个值匹配,则以后在
中建立一个关系

或者,将
compNumber
值存储为单独节点的更好方法是:

(:Person {forename:John, surname:Smith})-[:HAS_NUMBER]->(:Number {compNumber:001})
(:Person {forename:John, surname:Smith})-[:HAS_NUMBER]->(:Number {compNumber:002})
(:Person {forename:John, surname:Smith})-[:HAS_NUMBER]->(:Number {compNumber:003})

是的,你可以按你想要的方式做。在Neo4j中,可以使用以下命令设置数组属性:

CREATE (:Person {forename:'John', surname:'Smith', compNumber:[1,2,3]});
您可以使用IN关键字搜索特定节点:

MATCH (n:Person) WHERE 1 IN n.compNumber RETURN n;
然后可以通过以下方式创建关系:

MATCH (n:Company) MATCH (p:Person) WHERE n.companyNumber IN p.compNumber MERGE (p)-[:WORKS_IN]->(n);

我认为这个解决方案应该适合您的需要。

是的,您可以按照自己的方式来做。在Neo4j中,可以使用以下命令设置数组属性:

CREATE (:Person {forename:'John', surname:'Smith', compNumber:[1,2,3]});
您可以使用IN关键字搜索特定节点:

MATCH (n:Person) WHERE 1 IN n.compNumber RETURN n;
然后可以通过以下方式创建关系:

MATCH (n:Company) MATCH (p:Person) WHERE n.companyNumber IN p.compNumber MERGE (p)-[:WORKS_IN]->(n);

我认为此解决方案应该适合您的需要。

是否有某些原因使您无法与具有给定公司编号的公司建立关系,如果尚未存在具有给定公司编号的公司,则根据需要创建新的公司节点?是否有一些原因使您无法与具有给定公司编号的公司建立关系,如果尚未存在具有给定公司编号的公司,是否根据需要创建新的公司节点?