2017-01-18 4 views
1

特定のプロパティ(forename、surnameなど)を持つノードを持つPersonというラベルがあり、特定のプロパティ(name、companyNumberなど)を持つノードのラベルCompany )。今私はその人が働く会社を示す人のノードにプロパティcompNumberを追加する必要があります。 私の質問は次のとおりです。例Neo4jはプロパティとして複数の値を格納し、そのプロパティに基づいてノードを照合します

(:Person {forename:John, surname'Smith', compNumber:[001,002,003]}) 

以降Companyノード内のプロパティcompanyNumbercompNumberプロパティの値のいずれかに一致する場合は関係WORKS_ATを作るために、プロパティ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}) 
+0

指定されたcompNumberを持つ会社と関係を作成できず、指定したCompNumberを持つ会社がまだ存在しない場合は、必要に応じて新しいCompanyノードを作成することはできますか? – InverseFalcon

答えて

0

はい、あなたはあなたがそれを望むようにそれを行うことができます。 Neo4jでは、次のコマンドを使用して、配列プロパティを設定することができます。

MATCH (n:Person) WHERE 1 IN n.compNumber RETURN n; 

は、その後、あなたが次のようにリレーションを作成することができます:

あなたがキーワードで特定のノードを検索することができます
CREATE (:Person {forename:'John', surname:'Smith', compNumber:[1,2,3]}); 

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

私はこのソリューションはあなたのニーズに合っていると思います。

関連する問題