我有一个类Post,其中有一个名为“comments”的嵌入文档列表 在这里,我想做的就是检索用户发布的所有帖子的最新评论。
我怎样才能实现这一目标?我当前的代码,我只是循环通过该用户的'Post'类并手动收集“评论”。 但我也希望按最近添加的顺序进行排序,因此使用sort函数循环遍历手动收集的注释并重新排序。
这似乎非常低效,所以要求建议。谢谢!
答案 0 :(得分:1)
首先,如果您$push
在列表中有更新,那么您将按顺序保留评论
您可以使用$slice
运算符返回最后的x个注释,例如:
Post.objects(id=xxx).fields(slice__comments=-5)
但是,架构可能效率不高,尤其是如果您继续增加注释数量,或者注释可以取消发布。在这种情况下,您可能希望将注释拆分到自己的文档模型中,并通过id
将注释链接到帖子。这将是数据库的两次往返,但提供更多的灵活性 - 例如。您可以按日期过滤并发布。