Come selezionare tutti i documenti di un tipo in RavenDB
Domanda
Finora, ho provato il seguente:
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);
}
}
}
}
ho potuto caricare tutti aggiungendo un indice e quindi utilizzando tale indice come una query:
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.
C'è un modo per ottenere solo tutti i documenti di tipo Widget
senza dover creare un indice?
A questo punto sto solo giocando con RavenDB in un ambiente sandbox. Mi rendo conto che questo non è di solito l'approccio migliore per il recupero dei dati.
Soluzione
Si
utilizzare la query DocumentsByName - questo per quanto posso lavorare fuori non è intuitiva nell'interfaccia cliente al momento, ma sembra qualcosa di simile:
documentSession.LuceneQuery<ImageDocument>("Raven/DocumentsByEntityName")
.Where("Tag:Widgets")
.Take(100)
.ToArray();
È utile se si conosce l'API HTTP volte:)
. NB: Nota come pluralises per voi, questo è una convenzione e può essere ignorato
Nota: Nel forcella instabile (quindi probabile che sia stabile presto, quanto sopra può essere facilmente realizzato con
documentSession.Query<ImageDocument>().Take(100).ToArray()
Molto più bello