2010-09-28 15 views
9

Finora, ho provato la seguente:Come selezionare tutti i documenti di un tipo in RavenDB

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); 
      } 
     } 
    } 
} 

sono stato in grado di caricare tutto con l'aggiunta di 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 giocando con RavenDB in un ambiente sandbox. Mi rendo conto che questo di solito non è l'approccio migliore per il recupero dei dati.

risposta

10

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(); 

Aiuta se si conoscere l'API HTTP a volte :)

NB: Nota come si pluralizza per te, questa è una convenzione e può essere ignorata.

Nota: Nella forcella instabile (quindi probabile che sia stabile presto, quanto sopra può essere facilmente ottenuto con

documentSession.Query<ImageDocument>().Take(100).ToArray() 

Molto meglio

Problemi correlati