如何从RavenDB数据库获得所有实体名称(集合名称)

本文关键字:实体 集合 RavenDB 数据库 | 更新日期: 2023-09-27 17:52:46

我需要检索数据库中存在的所有RavenDB集合名称。有什么办法可以做到吗?如何?

如何从RavenDB数据库获得所有实体名称(集合名称)

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

documentStore.ExecuteIndex(new RavenDocumentsByEntityName());

Raven Studio构建"collections"列表的方式是从该索引中获取Tag字段的项。你可以做同样的事情:

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

(如果出于某种原因,您希望有超过1024种不同的实体类型,那么请进行分页。)

最后我得到了一个解决方案,通过尝试与我的知识获得学习文档之前。我想告诉人们,我只在被试探性的人弄得疲惫不堪的时候才来这里。

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