Ist es möglich, eine Abfrage durchzuführen und die eingebetteten Dokumente zurückzugeben?Zurückgeben eingebetteter Dokumente in Abfrage
Derzeit habe ich:
class Post
include MongoMapper::Document
many :comments
end
class Comment
include MongoMapper::EmbeddedDocument
belongs_to :post
key :author
key :date
key :body
end
Hier ist eine Abfrage, die fast da ist:
Post.all("comments.date" => {"$gt" => 3.days.ago})
Diese alle Post-Objekte angezeigt werden können, nicht aber die Kommentare. Ich denke, ich könnte etwas tun wie:
Post.all("comments.date" => {"$gt" => 3.days.ago}).map(&:comments)
Aber dies würde alle Kommentare aus den Beiträgen zurückgeben. Ich möchte alle Kommentare erhalten, die diese Bedingung erfüllen. Vielleicht sollte Comment
nicht eingebettet werden.
Denken Sie, es wäre besser, die Kommentare in ihre eigene Sammlung zu setzen? – vrish88
Ehrlich, es hängt vom Fokus deiner App ab. Wenn es in deiner App hauptsächlich um Kommentare geht, vielleicht. Es gibt jedoch auch andere Lösungen, die berücksichtigt werden müssen. Sie könnten beispielsweise eine de-normierte Capped-Sammlung namens "Kommentare" erstellen, die einfach die letzten, oh, 100 oder so Kommentare in einer separaten Sammlung speichert. Dann könnten Sie diesen Feed bei Bedarf anzeigen, aber ansonsten den Post-Feed anzeigen. NoSQL-Systeme fördern das Experimentieren mit Datendesign, finden Sie heraus, was für Sie am besten funktioniert! –