Neo4jキーがオプションの場合にJSONデータからノードをマージする方法

ティム・ホールドスワース

したがって、次のようなJSONデータがあります。

{"title": "Title1", "authors": [{"name": "Dave Chappelle", "org": "MIT"}], "id": "abc123"}
{"title": "Title2", "authors": [{"name": "Rick Sanchez"}, {"name": "Amy Schumer"], "id": "xyz234"}

orgキーは、論文著者リストの一部にのみ存在します。

存在する場合は、その組織にすでにノードがあるかどうかを確認したいと思います。組織ノードがすでに存在する場合、関係がまだ存在しない場合は、関係を作成したいだけです。組織ノードが存在しない場合は、ノード(o:Organization {name:authors.org})を作成し、関係WORKS_ATがまだ存在しない場合は作成者と組織の間に関係を作成します

私が現在試しているクエリ:

CALL apoc.load.json('file.txt') YIELD value AS q UNWIND q.id AS id UNWIND q.authors as authors 
MERGE (a:Author {name:authors.name}) 
MERGE (o:Organization {name:authors.org}) WHERE authors.org IS NOT NULL 
MERGE (i:Paper {id:q.id}) ON CREATE SET i.title=q.title
MERGE (a)-[:WORKS_AT]->(o) 
RETURN o.name;

ただし、これによりエラーが発生します。

Invalid input 'H': expected 'i/I' (line 2, column 109 (offset: 256))

サイファーはのWITH代わりにステートメントを望んでいると思いますが、そのWHERE理由は完全にはわかりません。どんな提案も大歓迎です!

FrobberOfBits

条件がある場所に移動して、次のWITHように追加する必要があります

CALL apoc.load.json('file.txt') YIELD value AS q UNWIND q.id AS id UNWIND q.authors as authors MERGE (a:Author {name:authors.name}) WITH a, q, authors WHERE authors.org is not null MERGE (o:Organization {name:authors.org}) MERGE (i:Paper {id:q.id}) ON CREATE SET i.title=q.title MERGE (a)-[:WORKS_AT]->(o) RETURN o.name;

エラーが発生する理由は、WHEREの後にMERGEを実行しようとしているためです。これは、構文的に有効ではありません。cypherでのクエリ構造の記述は次のように機能します:(cypher refcardから取得

[MATCH WHERE] [OPTIONAL MATCH WHERE] [WITH [ORDER BY] [SKIP] [LIMIT]] (CREATE [UNIQUE] | MERGE)* [SET|DELETE|REMOVE|FOREACH]* [RETURN [ORDER BY] [SKIP] [LIMIT]]

WHEREの後、最初にWITHを使用せずにMERGEを使用するオプションはありません。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Neo4jパスからすべてのノードとリレーションシップの名前を順番に表示する方法

分類Dev

Neo4Jプロパティが存在する場合はノードをマージし、関係のある別のノードを作成します

分類Dev

Neo4jで、Java APIの使用中にパス内のノードとリレーションタイプを制限する方法はありますか?

分類Dev

ノードとプロパティの値がneo4j暗号でわかっている場合、ノードキーを取得する

分類Dev

拡張関係がある場合とない場合のNeo4jミキシングノード

分類Dev

ノード、リレーション、プロパティを削除する代わりに追加しているのに、Neo4jデータベースのサイズが先週に比べて小さいのはなぜですか

分類Dev

Neo4jリターンの問題:1つのノードのプロパティと、Javaオブジェクトに接続された他のノードの1つのプロパティをマップする方法

分類Dev

neo4jで開始ノードから到達可能なすべてのノード(およびオプションでそれらの間のすべての関係)を取得する方法

分類Dev

スプリングデータneo4jがツリーデータ構造の子コレクションのメンバーとして親ノードをフェッチするのを回避するにはどうすればよいですか?

分類Dev

データベースNeo4jにノードが存在するかどうかを確認します

分類Dev

ノード間に直接の関係がない場合は、Neo4jのcsvfileから関係にプロパティを追加します

分類Dev

neo4jにノードが存在しない場合にのみノードを作成するにはどうすればよいですか?

分類Dev

一意性がノードプロパティと関係の存在の両方に基づいている場合のNeo4jでのマージ

分類Dev

スキーマインデックスを使用してNeo4jのノードを検索する

分類Dev

Neo4j:ディープノードデータを返す方法

分類Dev

ローカルNeo4jデータベース内のすべてのノードから単一のフィールドを取得する最速の方法

分類Dev

neo4jのノードのプロパティにスキーマインデックスがすでに存在するかどうかを確認するにはどうすればよいですか?

分類Dev

Neo4j / Cypher:ノード間の関係のいずれかが特定の基準を満たしている場合にノードを返します

分類Dev

Neo4jノードタイプを動的に作成する

分類Dev

Springデータneo4jは、@ Relationshipアノテーションが付けられたオブジェクトを初期化しません

分類Dev

Neo4jでノードをマージする

分類Dev

Neo4Jに履歴トランザクションデータを保存するためのスキーマ?

分類Dev

Neo4jを使用して同じデータを持つノードをマージする

分類Dev

neo4jでディープリンクされたノードを効率的にクエリする方法

分類Dev

Neo4jダンプは単一のデータベースにマージできますか?

分類Dev

定期的なコミットを使用してcsvから大きなデータをロードしながらNeo4jでトランザクションのロールバックを処理する方法

分類Dev

既存のノードにインデックスを作成する-Neo4J

分類Dev

Neo4j - リレーション プロパティとともにノードのコレクションを取得する

分類Dev

2つのノードの間にノードがある場合のNeo4Jの深さ

Related 関連記事

  1. 1

    Neo4jパスからすべてのノードとリレーションシップの名前を順番に表示する方法

  2. 2

    Neo4Jプロパティが存在する場合はノードをマージし、関係のある別のノードを作成します

  3. 3

    Neo4jで、Java APIの使用中にパス内のノードとリレーションタイプを制限する方法はありますか?

  4. 4

    ノードとプロパティの値がneo4j暗号でわかっている場合、ノードキーを取得する

  5. 5

    拡張関係がある場合とない場合のNeo4jミキシングノード

  6. 6

    ノード、リレーション、プロパティを削除する代わりに追加しているのに、Neo4jデータベースのサイズが先週に比べて小さいのはなぜですか

  7. 7

    Neo4jリターンの問題:1つのノードのプロパティと、Javaオブジェクトに接続された他のノードの1つのプロパティをマップする方法

  8. 8

    neo4jで開始ノードから到達可能なすべてのノード(およびオプションでそれらの間のすべての関係)を取得する方法

  9. 9

    スプリングデータneo4jがツリーデータ構造の子コレクションのメンバーとして親ノードをフェッチするのを回避するにはどうすればよいですか?

  10. 10

    データベースNeo4jにノードが存在するかどうかを確認します

  11. 11

    ノード間に直接の関係がない場合は、Neo4jのcsvfileから関係にプロパティを追加します

  12. 12

    neo4jにノードが存在しない場合にのみノードを作成するにはどうすればよいですか?

  13. 13

    一意性がノードプロパティと関係の存在の両方に基づいている場合のNeo4jでのマージ

  14. 14

    スキーマインデックスを使用してNeo4jのノードを検索する

  15. 15

    Neo4j:ディープノードデータを返す方法

  16. 16

    ローカルNeo4jデータベース内のすべてのノードから単一のフィールドを取得する最速の方法

  17. 17

    neo4jのノードのプロパティにスキーマインデックスがすでに存在するかどうかを確認するにはどうすればよいですか?

  18. 18

    Neo4j / Cypher:ノード間の関係のいずれかが特定の基準を満たしている場合にノードを返します

  19. 19

    Neo4jノードタイプを動的に作成する

  20. 20

    Springデータneo4jは、@ Relationshipアノテーションが付けられたオブジェクトを初期化しません

  21. 21

    Neo4jでノードをマージする

  22. 22

    Neo4Jに履歴トランザクションデータを保存するためのスキーマ?

  23. 23

    Neo4jを使用して同じデータを持つノードをマージする

  24. 24

    neo4jでディープリンクされたノードを効率的にクエリする方法

  25. 25

    Neo4jダンプは単一のデータベースにマージできますか?

  26. 26

    定期的なコミットを使用してcsvから大きなデータをロードしながらNeo4jでトランザクションのロールバックを処理する方法

  27. 27

    既存のノードにインデックスを作成する-Neo4J

  28. 28

    Neo4j - リレーション プロパティとともにノードのコレクションを取得する

  29. 29

    2つのノードの間にノードがある場合のNeo4Jの深さ

ホットタグ

アーカイブ