代码之家  ›  专栏  ›  技术社区  ›  Doctor Blue

如何在RavenDB中选择一种类型的所有文档

  •  9
  • Doctor Blue  · 技术社区  · 14 年前

    到目前为止,我尝试了以下方法:

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

    通过添加索引,然后将该索引用作查询,我可以加载所有内容:

    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.
    

    有没有一种方法可以直接获取所有类型的文档 Widget

    1 回复  |  直到 14 年前
        1
  •  11
  •   metdos    14 年前

    使用DocumentsByName查询-据我所知,这在客户端界面中目前并不直观,但看起来像这样:

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

    注:注意它是如何多元化为您,这是一个公约,可以推翻。

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

    好多了