Which Cypher query finds the shortest path from node A to node P?
4 phương ánCó giải thích
Các phương án trả lời
Chọn một phương ánLời giảiChọn phương án để mở
Đáp án đúng: "match p=shortestPath((a)-[:TO*]->(p)) return p". Trong Cypher, ngôn ngữ truy vấn của Neo4j, hàm shortestPath nhận một mẫu đường đi có độ dài biến thiên và trả về một đường ngắn nhất giữa hai nút; ký hiệu [:TO*] nghĩa là đi qua một hoặc nhiều quan hệ loại TO, còn biến p được gán cho cả đường đi để trả về. Phương án "match p=(a)-[:TO*]->(p) return p" thiếu hàm shortestPath nên trả về mọi đường đi có thể giữa hai nút, không chỉ đường ngắn nhất, và trên đồ thị lớn số đường này có thể bùng nổ. Phương án "match p=(a)-[:TO*1..5]->(p) return p" chỉ giới hạn độ dài từ 1 đến 5 bước, vẫn liệt kê mọi đường trong giới hạn đó chứ không chọn đường ngắn nhất. Còn "shortestPath(a TO P)" không phải câu lệnh Cypher hợp lệ vì thiếu mệnh đề match, thiếu cú pháp nút trong ngoặc tròn và quan hệ trong ngoặc vuông. Lưu ý các truy vấn trong đề viết rút gọn: chúng dùng p vừa làm tên đường đi vừa làm tên nút đích, trên Neo4j thật sẽ báo lỗi biến đã khai báo, nên khi viết thật cần đặt tên nút khác, nhưng ý của từng phương án vẫn đọc được như trên.