私のグラフモデルは、同じタイプの他のノードと親子関係を持つタイプAのノードを含んでいます。私はCYPHER文が Neo4j OGM型付きクエリで関連するオブジェクトをフィルタリングするにはどうすればよいですか?
MATCH (node:A) WHERE ... OPTIONAL MATCH ... RETURN node, ... ORDER BY node.id ASC LIMIT 100
のようなものが今ここで
session.query(A.class, cypher, parameters)
(ページング、フィルタリング、オプションの試合などのために)複雑なクエリを実行するには、次のセッションメソッドを使用してい
@NodeEntity(label = "A")
class A {
@Relationship(type = "PARENT")
private A parent;
// other relations to different types
...
}
私はまた、各結果(タイプAでもあります)の親ノードを取得したいと考えています。このために、私は単純に見ると期待何
MATCH (node:A) WHERE ... OPTIONAL MATCH parentRels=(node)-[parentRel:PARENT*1..]->(:A) RETURN node, collect(parentRel) ORDER BY node.id ASC LIMIT 100
と私のクエリを拡張し、各親フィールドがうまくルートまで、満たされているオブジェクトの私の同じリストAは、です。 Neo4jによって返された結果は正しいですが、OGMによって返されたマップ結果は役に立たなくなりました。なぜなら、関心のあるノード(親フィールドが正しく入力されている、はい)が含まれているだけでなく、結果リストに!
私は関心のあるノードで結果の列(上記の例では「ノード」)を指定できる隠しOGM機能を探し始めましたが、これは可能ではないようです。私が見
唯一の解決策は以下のとおりです。
- は別々のクエリで親ノードをフェッチ:(
- は自分自身をマッピングん:(:(
- ベースの別のクエリやフィルタで関連のIDを取得しますその上で。
はたぶん誰かがよりよい解決策を見ている?
あなたのご回答にはThx。異なるラベルを使用することは、実際には同じノードタイプについて話しているので、オプションではありません。あなたの2番目のオプションについては、私は関係を返すだけで、私はノードafaikをナビゲートすることができなくなります。このような孤立したユースケースには見えないので、私は問題を記入します... – Christian
https://github.com/neo4j/neo4j-ogm/issues/351 – Christian
@Christianちょうど別の方法があると思います編集された答え –