Comment faire pour sélectionner tous les documents d'un type dans RavenDB
Question
Jusqu'à présent, j'ai essayé ce qui suit:
public class Widget
{
public int Id;
public string Name;
}
public static class Main
{
public static void Main()
{
// Initialize store and preload with widgets...
using (var session = store.OpenSession())
{
var widgets = session.Load<Widget>();
foreach(var widget in widgets)
{
Console.WriteLine(widget.Name);
}
}
}
}
Je suis en mesure de charger tout en ajoutant un index, puis en utilisant cet index comme une requête:
var store = new DocumentStore();
store.DatabaseCommands.PutIndex("AllWidgets", new IndexDefinition<Widget>
{
Map = widget => from widget in widgets
select new { widget }
});
// Back in Main
var widgets = session.Query<Widget>("AllWidgets");
// Do stuff with widgets.
Y at-il un moyen d'obtenir que tous les documents de type Widget
sans avoir à créer un index?
A ce moment, je suis juste jouer avec RavenDB dans un environnement de bac à sable. Je me rends compte que ce qui est généralement pas la meilleure approche pour la récupération des données.
La solution
Oui
utiliser la requête DocumentsByName - ce pour autant que je peux travailler n'est pas intuitive dans l'interface client au moment, mais ressemble à quelque chose comme ceci:
documentSession.LuceneQuery<ImageDocument>("Raven/DocumentsByEntityName")
.Where("Tag:Widgets")
.Take(100)
.ToArray();
Il est utile si vous connaissez l'API HTTP parfois:)
NB:. Notez comment il pluralises pour vous, ceci est une convention et peut être surpassée
Remarque: Dans la fourchette instable (donc susceptible d'être stable bientôt, ce qui précède peut facilement être réalisé avec
documentSession.Query<ImageDocument>().Take(100).ToArray()
Bien mieux