0
パラメータに基づいて、2つのノード間の最短経路を計算します。戻り値の後にオブジェクトを逆シリアル化するNeo4J
私はこのクエリを持っています。 C#ので
MATCH p = (po:Ponto)-[r:VAI_PARA*]->(pd:Ponto)
WHERE 1 = 1
AND (po.PontoId = {p0})
AND (pd.PontoId = {p1})
WITH with p, reduce(d = 0, r in relationships(p) | d + r.Distancia) as totalDist
RETURN p AS path, totalDist AS Distance
ORDER BY totalDist DESC
LIMIT {p4}
、私はこのクエリを書いた:
var cypherQuery = _uow.GraphClient.Cypher
.Match($"p = (po:{PontoMapa.Label})-[r:{CaminhoRelacao.Label}*]->(pd:{PontoMapa.Label})")
.Where("1 = 1")
.AndWhere((PontoMapa po) => po.PontoId == query.PontoOrigemId)
.AndWhere((PontoMapa pd) => pd.PontoId == query.PontoDestinoId)
.With("p, reduce(d = 0, r in relationships(p) | d + r.Distancia) as totalDist")
.WithParams(new
{
query.PontoOrigemId,
query.PontoDestinoId
})
.Return((p, totalDist) => new
{
path = p.As<dynamic>(),
Distance = totalDist.As<int>()
})
.OrderByDescending("totalDist")
.Limit(1);
それはこのような何かを返すされています:
╒══════════════════════════════╤═══════════╕
│"p" │"totalDist"│
╞══════════════════════════════╪═══════════╡
│[{"PontoDeEntrada":true,"Ponto│40 │
│Id":"0eac5620-aeca-4b26-a3f2-5│ │
│631825829cb","Identificador":"│ │
│CTUPHA-0001"},{"Distancia":10}│ │
│,{"PontoDeEntrada":false,"Pont│ │
│oId":"40e00556-8625-4914-9774-│ │
│3f1a18962880","Identificador":│ │
│"CTUPHA-0002"},{"PontoDeEntrad│ │
│a":false,"PontoId":"40e00556-8│ │
│625-4914-9774-3f1a18962880","I│ │
│dentificador":"CTUPHA-0002"},{│ │
│"Distancia":10},{"PontoDeEntra│ │
│da":false,"PontoId":"ed856f2b-│ │
│f28f-4e5b-b69d-d4617247488e","│ │
│Identificador":"CTUPHA-0003"},│ │
│{"PontoDeEntrada":false,"Ponto│ │
│Id":"ed856f2b-f28f-4e5b-b69d-d│ │
│4617247488e","Identificador":"│ │
│CTUPHA-0003"},{"Distancia":10}│ │
│,{"PontoDeEntrada":false,"Pont│ │
│oId":"a7f8028f-9bd1-485e-899b-│ │
│0902e159a9fd","Identificador":│ │
│"CTUPHA-0004"},{"PontoDeEntrad│ │
│a":false,"PontoId":"a7f8028f-9│ │
│bd1-485e-899b-0902e159a9fd","I│ │
│dentificador":"CTUPHA-0004"},{│ │
│"Distancia":10},{"PontoDeEntra│ │
│da":false,"PontoId":"1a9b9e3a-│ │
│0333-417f-a5c5-e191dee8b9db","│ │
│Identificador":"CTUPHA-0005"}]│ │
└──────────────────────────────┴───────────┘
をしかし、私はリターンをデシリアライズしようとすると、パスがヌルいます。
このデータに適合するモデルを作成するにはどうすればよいですか?
また、別の方法で書かれたこの問題を助けるクエリが存在しますか?
こんにちは、ありがとうございます。これはまさに私の疑いです。あなたが戻ってくる "p"アイテムを見ると、ノードとリレーションの奇妙なコレクションが見えます。私が収集したようなものを作り、po-r-pd – Jedi31