Je regardais le code source pour RacoonBlog en essayant de trouver un moyen dans RavenDB d'interroger une collection contenue dans un document. J'ai lu sur les index et Map/Reduce et n'a pas réussi à trouver ma réponse.Comment fonctionne cette requête linq RavenDB
Dans le PostsController, il existe un ActionResult appelé Tag qui prend un paramètre de chaîne et contient la requête linq suivante.
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();
La méthode d'extension Where appelle TagsAsSlugs et effectue un Any, TagsAsSlugs ressemble à ceci.
public IEnumerable<string> TagsAsSlugs
{
get
{
if (Tags == null)
yield break;
foreach (var tag in Tags)
{
yield return SlugConverter.TitleToSlug(tag);
}
}
}
Donc, puisque les boucles propriété TagsAsSlugs sur la collection d'étiquettes ne la requête exige que tous les messages sont renvoyés de sorte que chaque poste peut avoir sa collection Tags itéré?
Je doute que ce soit le cas puisque Oren's blog est si rapide.