2012-07-03 13 views
8

を使用してMongoDBを頂いたコレクションを作成し、我々は現在、そのように私たちのコレクションを作成します。C#MongoDBのドライバを使用してC#のAPI

MongoServer mongoServer = MongoServer.Create("some conn str"); 
MongoDatabase db = mongoServer.GetDatabase("mydb"); 
MongoCollection logs = db.GetCollection("mycoll"); 

私が頂いたコレクションとしてmycollを使用したいと思います。私は、C#ドライバを使用してキャップ付きコレクションを作成する方法の例やドキュメントの詳細は見ていません。 JSの例がたくさんあり、Javaの例もあります(ここではCreating a mongodb capped collection in java)。

誰でもこれを前にやっていたのですか、C#で可能かどうか知っていますか?

+1

7月3日12時18:35からMongoDbの世界で多くのことが起こりました。受け入れられた答えはもはや最善のものではなく、最も高い票を持つものでもありません。 @ i3arnon答えは(執筆時点で)最良の答えです。 –

答えて

9

コレクションを作成するとき、あなたはコレクションはCollectionOptionsを使用することによりキャップされるように指定する必要があります。

CollectionOptionsBuilder options = CollectionOptions.SetCapped(true); 
database.CreateCollection("mycoll", options); 

あなたは(CreateCollectionメソッドを呼び出すことによって)明示的にコレクションを作成する必要があり、あなたのオプションを提供することができるようにします。存在しないコレクションを使用してGetCollectionを呼び出すと、デフォルトオプションで暗黙的に作成されます。

+0

素晴らしい作品です。ありがとう! – Ben

+1

これは現在推奨されていません。@ i3arnonの回答 – Dinei

15

これは別の例です。 MaxSizeプロパティとMaxDocumentsプロパティを設定することを忘れないでください。ドライバのバージョン2.0から始まっ

var server = MongoServer.Create("mongodb://localhost/"); 
var db = server.GetDatabase("PlayGround"); 

var options = CollectionOptions 
    .SetCapped(true) 
    .SetMaxSize(5000) 
    .SetMaxDocuments(100); 

if (!db.CollectionExists("Log")) 
    db.CreateCollection("Log", options); 
+0

を参照してください。 +1の詳細については、ありがとう! – Ben

14

新しいasyncのみのAPIがあります。古いAPIは、新しいAPIを覆うファサードとして使用されなくなり、非推奨になります。

頂いたコレクションを作成するには、現在推奨される方法は、呼び出し、CreateCollectionOptionsCapped = trueMaxSize = <cap size in bytes>またはMaxDocuments = <cap in doc count>を指定するインスタンス(あるいはその両方)でIMongoDatabase.CreateCollectionAsyncを待っていることです。

async Task CreateCappedCollectionAsync() 
{ 
    var database = new MongoClient().GetDatabase("HamsterSchool"); 
    await database.CreateCollectionAsync("Hamsters", new CreateCollectionOptions 
    { 
     Capped = true, 
     MaxSize = 1024, 
     MaxDocuments = 10, 
    }); 
} 
+2

これは正しい答えに "アップグレード"することはできません。 –

関連する問題