9

So far, I've tried the following:

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 have been able to load all by adding an index and then using that index as a 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.

Is there a way to just get all documents of type Widget without having to create an index?

At this point I'm just playing with RavenDB in a sandbox environment. I realize that this is usually not the best approach to fetching data.

4

1 に答える 1

11

はい

DocumentsByNameクエリを使用します-これは、私が理解できる限り、現時点ではクライアントインターフェイスでは直感的ではありませんが、次のようになります。

documentSession.LuceneQuery<ImageDocument>("Raven/DocumentsByEntityName")
                 .Where("Tag:Widgets")
                 .Take(100)
                 .ToArray();

HTTPAPIを時々知っていると役に立ちます:)

注意:それがどのように複数形になるかに注意してください。これは慣例であり、オーバーライドできます。

注:不安定なフォークでは(すぐに安定する可能性が高いため、上記は次の方法で簡単に実現できます)

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

はるかに良い

于 2010-10-01T23:44:41.070 に答える