MongoEngine:如何从引用文档中收集嵌入的文档

时间:2013-01-31 02:00:34

标签: mongodb mongoengine

我有一个类Post,其中有一个名为“comments”的嵌入文档列表 在这里,我想做的就是检索用户发布的所有帖子的最新评论。

我怎样才能实现这一目标?我当前的代码,我只是循环通过该用户的'Post'类并手动收集“评论”。 但我也希望按最近添加的顺序进行排序,因此使用sort函数循环遍历手动收集的注释并重新排序。

这似乎非常低效,所以要求建议。谢谢!

1 个答案:

答案 0 :(得分:1)

首先,如果您$push在列表中有更新,那么您将按顺序保留评论 您可以使用$slice运算符返回最后的x个注释,例如:

Post.objects(id=xxx).fields(slice__comments=-5)

但是,架构可能效率不高,尤其是如果您继续增加注释数量,或者注释可以取消发布。在这种情况下,您可能希望将注释拆分到自己的文档模型中,并通过id将注释链接到帖子。这将是数据库的两次往返,但提供更多的灵活性 - 例如。您可以按日期过滤并发布。