【发布时间】:2012-02-27 02:36:51
【问题描述】:
我正在查看 RacoonBlog 的源代码,试图在 RavenDB 中找到一种方法来查询文档中包含的集合。我确实阅读了有关索引和 Map / Reduce 的信息,但未能找到我的答案。
在 PostsController 中有一个名为 Tag 的 ActionResult,它接受一个字符串参数并包含以下 linq 查询。
var posts = RavenSession.Query<Post>()
.Include(x => x.AuthorId)
.Statistics(out stats)
.WhereIsPublicPost()
.Where(post => post.TagsAsSlugs.Any(postTag => postTag == slug))
.OrderByDescending(post => post.PublishAt)
.Paging(CurrentPage, DefaultPage, PageSize)
.ToList();
Where 扩展方法调用 TagsAsSlugs 并执行 Any,TagsAsSlugs 看起来像这样。
public IEnumerable<string> TagsAsSlugs
{
get
{
if (Tags == null)
yield break;
foreach (var tag in Tags)
{
yield return SlugConverter.TitleToSlug(tag);
}
}
}
那么,既然 TagsAsSlugs 属性循环遍历标签集合,那么查询是否要求返回所有帖子,以便每个帖子都可以迭代其标签集合?
我怀疑是这种情况,因为Oren's blog 太快了。
【问题讨论】: