Tôi đã đọc Aql Graph Operation và Graphs và không tìm thấy ví dụ cụ thể và giải thích hiệu suất cho trường hợp sử dụng là SQL-Traverse.Trong ArangoDB, sẽ truy vấn, với bộ lọc, từ hàng xóm (s) được thực hiện trong O (n)?
Ví dụ:
Nếu tôi có một bộ sưu tập Người dùng, trong đó có một công ty liên quan đến bộ sưu tập Công ty
Collection Công ty có quan hệ vị trí vào bộ sưu tập Location;
Collection Location hoặc là một thành phố, quốc gia hoặc khu vực, và có mối quan hệ thành phố, nước, khu vực cho chính nó.
Bây giờ, tôi muốn truy vấn tất cả người dùng thuộc về các công ty ở Đức hoặc EU.
SELECT from Users where Users.company.location.city.country.name="Germany";
SELECT from Users where Users.company.location.city.parent.name="Germany";
hoặc
SELECT from Users where Users.company.location.city.country.region.name="europe";
SELECT from Users where Users.company.location.city.parent.parent.name="europe";
Giả sử rằng Location.name được lập chỉ mục, tôi có thể có hai câu hỏi trên thực hiện với O (n), với n là số tài liệu ở Vị trí (O (1) để truyền tải đồ thị, O (n) để quét chỉ mục)?
Tất nhiên, tôi chỉ có thể tiết kiệm regionName hoặc COUNTRYNAME trực tiếp tại công ty , như các thành phố và các nước trong Liên minh châu Âu, không giống như ở ... những nơi khác, sẽ không thể thay đổi, nhưng những gì nếu ... bạn biết những gì tôi có nghĩa là (đùa, nếu tôi có các trường hợp sử dụng khác đòi hỏi phải cập nhật liên tục)
Ồ, tôi hiểu rồi, vì vậy tôi nên thay đổi suy nghĩ của mình, thay vì nói "đưa cho tôi danh sách người dùng có thành phố có quốc gia Đức", tôi nên yêu cầu "hãy xem Đức, hãy làm theo cho đến khi bạn có được người dùng và đưa cho tôi danh sách đó ". Sau đó, nếu tôi có nhiều hơn 1 điều kiện (xin lỗi cho tâm trí cũ được đặt ở đây) CHỌN từ Người dùng trong đó Users.company.location.city.country.name = "Germany" và Users.department.parent.parent = "Phát triển sản phẩm"; với "bộ phận" có thể được phân cấp (giống như vị trí), ví dụ: "Phụ trợ" -> "Phát triển web" -> "Phát triển phần mềm" -> "Phát triển sản phẩm"? – TruongSinh
"Giao lộ đồ thị" có phù hợp với kịch bản được mô tả ở trên không, và là O (m + n) trong đó m là số liệu nhân viên ở Đức và n là số nhân viên trong bộ phận "Phát triển sản phẩm"? Và hàm GRAPH_COMMON_NEIGHBORS' có đúng không? – TruongSinh
Bạn có thể thêm [FILTER statements to the traversal part] (https://docs.arangodb.com/devel/Aql/GraphTraversals.html#filter-examples) và có lẽ do đó sẽ muốn lọc cho một cái gì đó như path.vertices [3 ] .department == "phát triển sản phẩm" - hoặc nếu xuất phát từ bộ sưu tập khác, trước tiên bạn có thể nhận được bộ phận đó bằng bộ phận LET = (FOR d IN department FILTER name = "Phát triển sản phẩm" RETURN d) ' – dothebart