Which query calculates the weighted shortest path using distance in Neo4j?

4 phương ánCó giải thích

Các phương án trả lời

Chọn một phương án
Lời giảiChọn phương án để mở
Đáp án đúng: "MATCH p = shortestPath((from)-[:TO*]->(to)) WITH REDUCE(dist = 0, rel in rels(p) | dist + toInt(rel.dist)) AS distance RETURN path, distance". Trong Cypher của Neo4j, shortestPath tìm đường ngắn nhất qua các quan hệ TO với độ dài thay đổi (dấu sao), sau đó rels(p) lấy danh sách các cạnh trên đường p và REDUCE duyệt từng cạnh, cộng dồn thuộc tính dist (đã đổi sang số nguyên bằng toInt) vào biến tích luỹ bắt đầu từ 0; kết quả là tổng khoảng cách, tức trọng số của đường đi. "MATCH (a)-[:TO]->(b) RETURN path" chỉ khớp đúng một cạnh giữa hai nút, không có hàm tìm đường ngắn nhất và không tính trọng số nào. "MATCH (n)-[r]-() RETURN REDUCE(dist=0, r in r | dist + 1)" chỉ cộng 1 cho mỗi quan hệ nên đếm số cạnh, bỏ qua thuộc tính khoảng cách và cũng không có đường đi nào. "MATCH p=(a)-[:TO*]->(b) RETURN reduce(p)" gọi reduce thiếu biến tích luỹ và biểu thức cộng dồn nên không hợp lệ, và mẫu này trả mọi đường chứ không chọn đường ngắn nhất.

Cùng phần 13

Xuất hiện trong 2 bộ đề