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 に答える