問題タブ [cypher]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
neo4j - 空のリストで head 関数を使用するときに null 値を取得する方法
このような暗号クエリがあります。
「way」という名前の関係はオプションの関係であるため、「way」という関係が存在しない場合、「consumeTime」という名前のプロパティは空のリストになります。
クエリ結果は次のとおりです。
| | 0 | "JGS" | [] |
| | 1 | "SZX" | [3600] |
プロパティ "consumeTime" で head 関数を使用したい場合、"Invalid query: head of empty list" というエラーが返されます。
どうすればこのような結果を得ることができますか?
| | 0 | "JGS" | null | null |
| | 1 | "SZX" | 3600 |
python - WHERE句で算術演算を使用したNeo4jのPythonバインディングでのサイファークエリ
Python バインディング v 1.6 で自分の neo4j データベースに対して次の Cypher クエリを実行すると、問題が発生しました。
私のデータベースには、インデックス付きプロパティlabel
と整数プロパティとの関係を持つノードがありますyear
。このクエリを実行すると、エラーが発生します
私はすでにこのクエリで括弧をいじっていますが、成功していません。誰でもこのエラーを解決するのを手伝ってもらえますか?
編集: 問題は neo4j-embedded バージョン 1.6 の使用にあると思いましたが、バージョン 1.9.dev0 (github からコンパイル) までアップグレードしましたが、それでも同じエラーが発生します。
Edit2: ulkas のコメントのおかげで、インタラクティブなサイファー コンソールについて知り、そこにサンプル グラフとサイファー クエリを作成しました (ただし、インデックス部分はありません)。クエリに問題があります:
Edit3: コンソールをいじってみたところ、無向リレーションシップとダイヤモンド シェイプ パターン マッチングが許可されていないことがわかりました。それが、コンソールhttp://console.neo4j.org/?id=oqspkcで作業したものです。このクエリは Python で失敗し、同じエラー メッセージが表示されます ( Unclosed parenthesis
)。neo4j でひし形のパターンを一致させることはできますか? Python バインディングの何が問題になる可能性がありますか?
neo4j - Neo4j Cypher クエリ RETURN 個別のノード セット
シンプルなソーシャル ネットワーク グラフ db モデルがあります。ユーザーは他のユーザーをフォローして投稿できます。ユーザーが投稿したすべての投稿のリストと、ユーザーがフォローしているすべての投稿のリストを取得しようとしています
これは、b のすべての値と d のすべての値を結合したタプルである、2 つのクロス積を返します。(bxd) 投稿の単純なリストだけを希望します。どうすればいいですか?2 つの別々のクエリを実行する必要がありますか?
python - Neo4j - Cypher 読み書きリターン クエリ
私はneo4jにかなり慣れていません。cypher と REST API で少し遊んでみました。特定のパスに沿ってリーフ ノードを作成できるようにしたいのですが、これらのノードはある種のイベントであると考えてください。このイベントが接続されるノードの ID は、実行時にわかりません。ルックアップを行い、ノードの ID を取得してから、新しいノードを作成する必要があります。
そのため、実行時に cypher を使用して MATCH を実行して、イベントをアタッチできるノードを取得し、MATCH によって返された既存のノードとの関係とともに新しいノードを作成できることを望んでいました。それで、私がぴったりだと思った読み取り-書き込み-戻りクエリを持つサイファーチートシートに出くわしました。しかし、ドキュメンテーションではそれについてあまり言及されていないか、私はスーパーグーグルではないかもしれません!!
これ(読み書きリターン)が正しい/有効なアプローチであるかどうか誰か教えてください。
どうもありがとう!
java - JavaからのCypherクエリでのパラメータの指定
Javaの組み込みNeo4jデータベースを使用しています。プロパティと値のペア(たとえば、('id'、 '29384234')が与えられた場合、Cypherを使用して対応する一意のノードを見つけたいと思います。Neo4jのドキュメントでいくつかの例を見てきましたが、すべてが開始ノードを識別するための静的IDまたはキーと値のペア。CypherJavaAPIはexecute(String query,Map<String,Object> params)
メソッドを説明していますが、例は示していません。
クエリでパラメータ値はどのように参照されますか?
または、ノードを一意に識別する(プロパティ名、値)ペアを指定して、単一のノードを取得するためのより良い方法はありますか?
neo4j - Neo4j インデックスとレガシー データ
クエリを実行したいレガシー データセット ( GraphML として表されるENRON データ) があります。関連する質問のコメントで、 @StefanArmbrusterは、Cypher を使用してデータベースにクエリを実行することを提案しています。私のクエリのユース ケースは単純です。メッセージ ID (メッセージ ノードのプロパティ) を指定すると、その ID を持つノードを取得し、そのメッセージの送信者ノードと受信者ノードも取得します。
Cypher でこれを行うには、まずノードのインデックスを作成する必要があるようです。データがgraphMLファイルからロードされたときにこれを自動的に行う方法はありますか? (Gremlin を使用してデータをロードし、データベースを作成しました。)
データの外部 Lucene インデックスもあります (他の目的で必要です)。2 つのインデックスを持つことは理にかなっていますか? たとえば、Neo4J ノード ID を外部インデックスにインデックス化し、それらの ID に基づいてグラフをクエリできます。私の懸念は、これらの ID の持続性です。(類推すると、Lucene ドキュメント ID は永続的なものとして扱われるべきではありません。)
だから、私はすべきですか:
Cypher を使用してメッセージ ID を照会するために、内部的に Neo4j グラフにインデックスを付けますか? (もしそうなら、それを行う最善の方法は何ですか:インデックスを構築するための適切な呪文でデータベースを再生成しますか?既存のデータベースにインデックスを構築しますか?)
Neo4j ノード ID を外部 Lucene インデックスに保存し、これらの保存された ID を介してノードを取得しますか?
アップデート
Gremlin と組み込みサーバーで自動インデックス作成を機能させようとしましたが、うまくいきませんでした。ドキュメントでは、それは言う
基礎となるデータベースは自動索引付けされます。セクション14.12「自動索引付け」を参照してください。これにより、スクリプトは索引ルックアップによってインポートされたノードを返すことができます。
しかし、新しいデータベースをロードした後にグラフを調べると、インデックスが存在しないようです。
自動インデックス作成に関する Neo4jのドキュメントには、一連の構成が必要であると書かれています。設定に加えてnode_auto_indexing = true
、構成する必要があります
実際に自動インデックスを作成するには、インデックスを作成するプロパティを設定する必要があります。これを行うには、インデックスを作成するプロパティ キーをリストします。構成ファイルで、node_keys_indexable および relationship_keys_indexable 構成キーを使用します。埋め込みモードを使用する場合は、GraphDatabaseSettings.node_keys_indexable および GraphDatabaseSettings.relationship_keys_indexable 構成キーを使用します。いずれの場合も、値は、インデックスを作成するプロパティ キーのカンマ区切りのリストにする必要があります。
では、Gremlin はGraphDatabaseSettings
パラメーターを設定することになっているのでしょうか? 次のように、Neo4jGraph コンストラクターにマップを渡そうとしました。
しかし、インデックスの作成には明らかな影響はありませんでした。
更新 2
Gremlin を使用してデータベースを構成するのではなく、Neo4j のドキュメントに記載されている例を使用して、データベースの作成が次のようになるようにしました (Groovy で)。
私の検索は次のように行われました:
そして、これはうまくいくように見えました。ただし、オブジェクトのgetIndices()
呼び出しNeo4jGraph
は空のリストを返したことに注意してください。結果として、Neo4j API を正しく実行できますが、Gremlin ラッパーはインデックス作成状態を反映できないようです。式g.idx('node_auto_index')
( Gremlin Methodsに記載) は null を返します。
rest - Neo4j REST Cypher と params: REST を介した Cypher クエリのパラメーターとなるもの
私はこのクエリをparamsを使って機能させようとしていましたが、うまくいきませんでした。私はいつも同じエラーを受けていました。
次に、パラメーターを削除{start}
し、関係にバックチップ (`) を使用したところ、魅力的に機能しました。
では、params を使用する適切な方法は何ですか?クエリのどこで使用できますか?
念のため、バックチップも{start}
機能しません。次のリクエストも機能しません。
私は1.9M01を使用しています
neo4j - Neo4j Cypher:エンドノードが存在する場合にのみリレーションを作成します
次のCypherステートメントの場合:
gがnullになる場合があります(つまり、IDがgroupIdのグループが存在しない)。このような場合、このステートメントでユニットを作成し、has_groupとgの関係をスキップするにはどうすればよいですか?現在、おそらくgがnullであるため、ユニットは作成されません。
Neo4jAdvanced1.8を使用しています
ありがとう!
neo4j - CypherFluentQuery で NodeReferences を使用するには?
私は Neo4J を試してみましたが、テキスト クエリは問題なく動作します。次に、.Net で Neo4JClient に切り替え、CypherFluentQuery を使用したいのですが、非常に奇妙な理由により、生成されたクエリにはノード ID が含まれず、{p0}、p{1} などのプレースホルダーのみが含まれます... )何が欠けていますか?
私の簡単なクエリの例の下に:
テキストクエリ (正常に動作):
CypherFluentQuery (THROWS EXCEPTION):
参照されるノード クラスは次のとおりです。
スローされた例外:
更新 Neo4JClientをナゲットで更新しましたが、明らかにExecuteGetCypherResultsを使用できないため、私の質問はこれまで以上に有効になったと思います:-/
neo4j - neo4j で「最も人気のある」クエリをサポートする
「いいね」がユーザーと記事の関係である場合、neo 4j で「最もいいね」された記事のクエリを実行したい場合、次のようにするのが最善の方法です。
- 記事自体に totalLikes カウント プロパティを保持し、サイファー クエリでそのプロパティを並べ替えますか? そのプロパティは、誰かが記事を気に入るたびに更新されます。
または
- 各記事の totalLikes でインデックスを保持します。記事が気に入られるたびに、インデックス エントリを削除して再度追加する必要がありました。
合計関係数でクエリを並べ替えることができないというドキュメントを読んだと思います。