Cómo seleccionar todos los documentos de un tipo en RavenDB
Pregunta
Hasta ahora, he intentado lo siguiente:
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);
}
}
}
}
I han sido capaces de cargar todos mediante la adición de un índice y a continuación, utilizando dicho índice como una consulta:
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.
¿Hay una manera de obtener sólo todos los documentos de tipo Widget
sin tener que crear un índice?
En este momento sólo estoy jugando con RavenDB en un entorno de pruebas. Soy consciente de que esto generalmente no es el mejor enfoque para ir a buscar los datos.
Solución
Sí
utilizar la consulta DocumentsByName - esto por lo que yo puedo hacer ejercicio no es intuitivo en la interfaz del cliente en el momento, pero es como la siguiente:
documentSession.LuceneQuery<ImageDocument>("Raven/DocumentsByEntityName")
.Where("Tag:Widgets")
.Take(100)
.ToArray();
Esto ayuda si conoce la API HTTP veces:)
Nota:. Nota cómo pluralises para usted, se trata de una convención y puede ser anulado
Nota: En el tenedor inestable (por lo que es probable que sea estable pronto, lo anterior se puede conseguir fácilmente con
documentSession.Query<ImageDocument>().Take(100).ToArray()
Mucho mejor