¿Es posible realizar una consulta y devolver los documentos incrustados?Devolver documentos incrustados en la consulta
Actualmente, tengo:
class Post
include MongoMapper::Document
many :comments
end
class Comment
include MongoMapper::EmbeddedDocument
belongs_to :post
key :author
key :date
key :body
end
Aquí es una consulta que es casi allí:
Post.all("comments.date" => {"$gt" => 3.days.ago})
Esto devolverá todos los objetos postales, pero no los comentarios. Supongo que podría hacer algo como:
Post.all("comments.date" => {"$gt" => 3.days.ago}).map(&:comments)
Pero esto devolvería todos los comentarios de las publicaciones. Me gustaría obtener todos los comentarios que cumplen esta condición. Quizás Comment
no se debe incrustar.
¿Crees que sería mejor incluir los comentarios en su propia colección? – vrish88
Honestamente, depende del enfoque de su aplicación. Si su aplicación se trata principalmente de comentar, tal vez. Sin embargo, hay otras soluciones a considerar también. Por ejemplo, podría crear una colección limitada desnormalizada llamada "comentarios" que simplemente almacenara los últimos, por ejemplo, 100 comentarios en una colección separada. Entonces podría mostrar esa alimentación cuando sea necesario, pero mostrar la alimentación de publicación de lo contrario. Los sistemas NoSQL fomentan la experimentación en el diseño de datos, ¡encuentre lo que funciona mejor para usted! –