2

我需要检索数据库中存在的所有 RavenDB 集合名称。有没有办法做到这一点?如何?

4

2 回答 2

6

如果您使用过该工作室,您会看到它创建了一个名为Raven/DocumentsByEntityName. 如果你不使用工作室,或者你想确保它在那里,你可以自己构建它:

documentStore.ExecuteIndex(new RavenDocumentsByEntityName());

Raven Studio 构建其“集合”列表的方式是Tag从该索引中获取字段的术语。你可以做同样的事情:

var results = documentStore.DatabaseCommands
                           .GetTerms("Raven/DocumentsByEntityName", "Tag", "", 1024);

(如果您出于某种原因期望超过 1024 种不同的实体类型,请分页。)

于 2013-01-12T23:12:44.397 回答
2

最后,我通过尝试使用我之前获得的学习文档的知识得到了一个解决方案。我想给人们做个广告,我只有在我厌倦了试探性的时候才来这里。

public string[] getCollectionNames()
        {
            using (var session = this.store.OpenSession())
            {
                return session.Advanced.LuceneQuery<dynamic>()
                           .SelectFields<dynamic>("@metadata")
                           .Select<dynamic, string>(x => x["@metadata"]["Raven-Entity-Name"])
                           .Distinct()
                           .ToArray();

            }
        }
于 2013-01-12T19:34:26.457 回答