【问题标题】:RavenDB inner collection pagingRavenDB 内部集合分页
【发布时间】:2012-01-12 14:21:38
【问题描述】:

我是 RavenDB 的新手,据我了解,当您请求文档时,您将获得整个文档(除非您使用某种索引等)。

示例场景

以博客文档场景为例,文档如下所示:

public class Blog
{
   public string Id { get; set; }
   public string AuthorId { get; set; }
   public DateTime PublishedUTC { get; set; }
   public string Title { get; set; }
   public string Content { get; set; }
   public Comment[] Comments { get; set; }
}

public class Comment
{
   public string Id { get; set; }
   public string AuthorId { get; set; }
   public DateTime PublishedUTC { get; set; }
   public string Content { get; set; }
}

假设我们有一个网页/blogs/posts/。该页面显示一组分页的博客文章和每个博客的评论。我了解如何使用 Skip()Take() 方法在博客文档上使用分页。我想将分页逻辑应用于每个博客文档的内部 Comments 集合。

我的问题

  1. 如何获得一组分页的博客和一个分页集 他们的评论?

  2. 鉴于分页要求,您会更改给定的博客吗 记录场景,以便 cmets 不存在于博客中 文件?

【问题讨论】:

    标签: c# nosql ravendb


    【解决方案1】:
    1. 如果您使用 .Skip().Take() 来获取博客文章的分页列表,那么您已经做对了。为了在 cmets 上也获得分页列表,您可以在内存列表上使用相同的方法(然后它将是 linq-to-objects)。所以我建议把你的Comment[]数组改成List<Comment>,那么你就有这两种linq方法可用了。

    2. 1234563 -要求。我将有 2 个文档,一个包含帖子,另一个包含 所有 cmets。这样,您无需在每次想要显示帖子列表时都加载所有 cmets,但在您实际需要它们时仍然具有文档数据库优势。使用 RavenDB 也很容易在评论项上定义索引,以防您在其他地方需要它们(侧边栏左右)。您可以在 RaccoonBlog 中找到这个实现。

    【讨论】:

    • 感谢您提供的信息和指向 RaccoonBlog 的指针。我将混合在帖子中存储一些评论(最新的)并将其余的存储在他们自己的文档中。然后,通过 DDD 方法,我们可以使用“最新”的 cmets 加载帖子,当我们需要对其余 cmets 进行分页时,我们可以通过查询和分页这些文档本身来实现。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-07
    • 1970-01-01
    • 1970-01-01
    • 2016-05-21
    相关资源
    最近更新 更多