Я искал исходный код для RacoonBlog , пытаясь найти способ в RavenDB запрашивать коллекцию, содержащуюся в документе. Я прочитал об индексах и Map / Reduce и не смог найти ответ.
В PostsController есть ActionResult с именем Tag, который принимает строковый параметр и содержит следующий запрос 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 зацикливается на коллекции тегов, требует ли запрос, чтобы все сообщения были возвращены, чтобы у каждого сообщения могла быть повторена коллекция тегов?
Я сомневаюсь, что это так, поскольку Блог Орена очень быстрый.