2012-04-25 93 views
2

我的代码是:如何获得RavenDB文件的名称

using (var session = documentStore.OpenSession(databaseName)) 
{ 
    var list = session.Query<dynamic>("Raven/DocumentsByEntityName").ToArray(); 

    foreach (var item in list) 
    { 
     Console.WriteLine(item); 
    } 
} 

但它并没有给我的文档的名称。我想列出单个数据库中的所有文档。

+0

你想做什么,你为什么要列出数据库中的所有文档? – 2012-04-25 13:25:27

+0

如果您只想查看所有文档,请启动ravendb服务器并访问http:// localhost:8080/docs或http:// localhost:8080/raven/documents.html – 2012-04-25 13:27:41

+0

您好Matt,我正在构建GUI Ravendb和我的操作之一是检索单个数据库中的所有文档。可能吗 ? – 2012-04-26 05:45:55

回答

2

尝试这样的事情,这是一个有点更通用的,它允许访问原始文件

using (var session = store.OpenSession()) 
{ 
    //Issue a dummy query to make sure the indexing has finished 
    var dummyQuery = session.Query<dynamic>("Raven/DocumentsByEntityName") 
     .Customize(x => x.WaitForNonStaleResultsAsOfLastWrite()) 
     .ToList(); 

    //First get all the document types, i.e. the different entity names 
    var docTypes = store.DatabaseCommands.GetTerms("Raven/DocumentsByEntityName", "Tag", "", 128); 
    foreach (var type in docTypes) 
    { 
     Console.WriteLine("\n{0}:", type); 
     //Might need to do paging here, can only get at most 1024 docs in 1 go! 
     var docs = store.DatabaseCommands.StartsWith(type, 0, 1024).ToList(); 

    foreach (var doc in docs) 
    { 
     Console.WriteLine(" {0}: {1}", doc.Key, doc.ToJson()); 
    } 
} 

}

+0

非常感谢马特。真的行。它正在为默认数据库工作。我修改了指定数据库的代码并发布它。:) – 2012-04-27 05:02:16

+0

store.DatabaseCommands.GetTerms()中字符串“tag”的用法是什么? – 2012-04-27 07:10:42

+0

这是您希望获得的术语的名称,“Raven/DocumentsByEntityName”使用的术语的名称,请参阅https://github.com/ravendb/ravendb/blob/master/Raven.Database/Plugins/Builtins/ CreateSilverlightIndexes.cs#L17 – 2012-04-27 08:09:01

0

修改马特瓦伦的代码指定的数据库。

public void DocumentNamesWithMetadata(string databaseName="1") 
     { 
      using (var session = documentStore.OpenSession(databaseName)) 
      { 
       //Issue a dummy query to make sure the indexing has finished 
       var dummyQuery = session.Query<dynamic>("Raven/DocumentsByEntityName") 
             .Customize(x => x.WaitForNonStaleResultsAsOfLastWrite()) 
             .ToList(); 

       //First get all the document types, i.e. the different entity names 
       var docTypes = session.Advanced.DatabaseCommands.GetTerms("Raven/DocumentsByEntityName", "Tag", "", 128); 
       foreach (var type in docTypes) 
       { 
        Console.WriteLine("\n{0}:", type); 
        //Might need to do paging here, can only get at most 1024 docs in 1 go! 
        var docs = session.Advanced.DatabaseCommands.StartsWith(type, 0, 1024).ToList(); 

        foreach (var doc in docs) 
        { 
         Console.WriteLine(" {0}: {1}", doc.Key, doc.ToJson()); 
        } 
       } 
      } 
     }