Powiedz, że mam blog
z kolekcją , a każdy post
ma kolekcję comments
. Chcę zapytać wszystkie komentarze, aby znaleźć 5 ostatnich we wszystkich wpisach na blogu. Z RDBMS po prostu idź prosto do tabeli komentarzy, sortuj według daty i weź 5. Czy jest możliwe zrobienie czegoś podobnego w Ravendb, skoro komentarze nie są zagregowanym rootem?Wywoływanie kolekcji podrzędnych w dokumencie Ravendb
5
A
Odpowiedz
5
highace, Tak, z pewnością można to zrobić. Możesz zobaczyć, jak robimy coś podobnego tutaj: https://github.com/ayende/RaccoonBlog/blob/master/RaccoonBlog.Web/Infrastructure/Indexes/PostComments_CreationDate.cs
2
Ma sens przechowywanie komentarzy jako osobnych dokumentów, a nie w każdym poście, w przeciwnym razie kończy się ładowanie i zapisywanie całego dokumentu pocztowego za każdym razem, gdy dodawany jest komentarz.
Mając to na uwadze, że po prostu zapytać komentarze coś następującym
session.Query<Comment>().OrderByDescending(x => x.CommentDate).Take(5)
Myślałem, że tak będzie. Jak połączyć je z postem nadrzędnym? - Podaj im fałszywe pole klucza obcego, a następnie wykonaj inne zapytanie w oparciu o to? – highace
Nie jestem pewien, czy mogę dodać wiele do poniższego artykułu, który wyjaśnia różne opcje tworzenia relacji z dokumentami, zobacz, czy to pomaga http://daniellang.net/how-to-handle-relations-in-ravendb/ Prawdopodobnie dodanie właściwość postId do komentarza i użyj opcji Uwzględnij byłaby strategią, którą wybrałbym na –
Fantastyczne, wielkie dzięki. – highace