Helpex - Trao đổi & giúp đỡ Đăng nhập

Đồ thị trong RavenDB: Kết quả truy vấn

Nguyễn Phi Nhung
· 17:00 22/10/2018
20:41:16 13/06/2021

Chúng tôi gặp phải một vấn đề thiết kế thú vị khi xây dựng các truy vấn đồ thị cho RavenDB. Tuyên bố vấn đề là khá dễ dàng. Một tài liệu có nên được phép liên kết với nhiều bí danh trong kết quả truy vấn hay chỉ một bí danh? Tuy nhiên, nếu không có ngữ cảnh, câu lệnh vấn đề không có ý nghĩa, vì vậy chúng ta hãy nói về vấn đề thực tế là gì. Hãy xem xét đồ thị bên phải. Chúng tôi có ba tài liệu, Arava, Oscar và Phoebe, và các cạnh sau:

  • Arava thích Oscar
  • Phoebe thích Oscar

Đồ thị trong RavenDB: Kết quả truy vấn

Bây giờ chúng tôi chạy truy vấn sau:

Đồ thị trong RavenDB: Kết quả truy vấn

Truy vấn này yêu cầu một con chó thích một con chó khác được một con chó thích. Một cách khác để thể hiện tình cảm tương tự (thực sự, cách RavenDB thực sự xem xét loại truy vấn này) là viết nó như sau:

Đồ thị trong RavenDB: Kết quả truy vấn

Khi xử lý biểu thức , chúng tôi yêu cầu các tài liệu khớp với cùng một bí danh sẽ giống nhau. Với biểu đồ mà chúng tôi thực hiện điều này, bạn sẽ coi kết quả phù hợp là gì?

Ngay bây giờ, chúng tôi có tùy chọn đầu tiên, trong đó một tài liệu có thể được đối sánh với nhiều bí danh khác nhau trong cùng một kết quả, điều này sẽ dẫn đến các kết quả sau:

Đồ thị trong RavenDB: Kết quả truy vấn

Lưu ý rằng trong trường hợp này, các mục nhập đầu tiên và cuối cùng khớp A và C với cùng một tài liệu.

Tùy chọn thứ hai là đảm bảo rằng một tài liệu chỉ có thể được liên kết với một bí danh duy nhất trong kết quả, điều này sẽ xóa các kết quả trùng lặp ở trên và chỉ cung cấp cho chúng tôi:

Đồ thị trong RavenDB: Kết quả truy vấn

Lưu ý rằng trong cả hai trường hợp, vị trí đều quan trọng và số lượng kết quả tối thiểu mà truy vấn này sẽ tạo ra là hai, bởi vì chúng ta cần xem xét các điểm xuất phát khác nhau cho đối sánh mẫu trên biểu đồ.

Bạn nghĩ chúng ta nên làm gì trong trường hợp như vậy? Có lý do gì để muốn hành vi này hoặc hành vi kia và nó có phải là thứ mà người dùng chọn không?

4 hữu ích 0 bình luận 4.1k xem chia sẻ

Có thể bạn quan tâm